Skip to content
Closed
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import type {
FiledReturnsFullFiscalYearTargetStatus,
PortalFlowStepResult,
} from "../connectors/gst/filed-returns-contracts";
import {
isResolvedFullFiscalYearTargetStatus,
needsExplicitFullFiscalYearRetry,
} from "../connectors/gst/filed-returns-contracts";
import {
ALL_SUPPORTED_FULL_FISCAL_YEAR_CATALOGUE_VERSION,
expandAllSupportedFullFiscalYearTargetPlan,
Expand All @@ -29,17 +33,6 @@ import {
type FiledReturnsAllSupportedFullFiscalYearTarget,
} from "./filed-returns-all-supported-full-fiscal-year-validation";

const POSITIVE_TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"downloaded",
"not-filed",
]);
const EXPLICIT_RETRY_TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"download-unconfirmed",
"blocked",
"failed",
"cancelled",
"manually-observed",
]);
const NON_RESUMABLE_EXPLICIT_RETRY_SIGNALS = new Set([
"all-supported-full-fiscal-year-artifact-snapshot-mismatch",
"full-fiscal-year-pinned-gst-tab-unavailable",
Expand All @@ -64,7 +57,7 @@ export function allSupportedExplicitRetryTarget(
const target = ledger.targets[targetIndex]!;
return ledger.targets
.slice(0, targetIndex)
.every((candidate) => POSITIVE_TARGET_STATUSES.has(candidate.status)) &&
.every((candidate) => isResolvedFullFiscalYearTargetStatus(candidate.status)) &&
ledger.targets.slice(targetIndex + 1).every((candidate) => candidate.status === "pending")
? target
: null;
Expand All @@ -74,7 +67,7 @@ function isExplicitlyRetryableTarget(
target: FiledReturnsAllSupportedFullFiscalYearTarget,
): boolean {
return (
EXPLICIT_RETRY_TARGET_STATUSES.has(target.status) &&
needsExplicitFullFiscalYearRetry(target.status) &&
!target.safeSignals.some((signal) => NON_RESUMABLE_EXPLICIT_RETRY_SIGNALS.has(signal))
);
}
Expand Down Expand Up @@ -118,8 +111,9 @@ export function allSupportedResumeIsProductive(
return !ledger.targets.some((target) => target.status === "running");
}
if (ledger.status === "partial") {
return ledger.targets.every((target) =>
["pending", ...POSITIVE_TARGET_STATUSES].includes(target.status),
return ledger.targets.every(
(target) =>
target.status === "pending" || isResolvedFullFiscalYearTargetStatus(target.status),
);
}
return false;
Expand Down Expand Up @@ -335,7 +329,7 @@ export function canCompleteAllSupportedFullFiscalYearLedger(
): boolean {
return (
ledger.targets.length > 0 &&
ledger.targets.every((target) => POSITIVE_TARGET_STATUSES.has(target.status))
ledger.targets.every((target) => isResolvedFullFiscalYearTargetStatus(target.status))
);
}

Expand Down Expand Up @@ -406,7 +400,9 @@ export function markAllSupportedFullFiscalYearTargetTerminal(
status: effectiveStatus,
...canonicalDurableTargetStatus(targetScope(target), effectiveStatus, inputSignals),
...(diagnosticState ?? {}),
...(POSITIVE_TARGET_STATUSES.has(effectiveStatus) ? { completedAt: timestamp } : {}),
...(isResolvedFullFiscalYearTargetStatus(effectiveStatus)
? { completedAt: timestamp }
: {}),
updatedAt: timestamp,
}
: target,
Expand All @@ -422,7 +418,7 @@ export function markAllSupportedFullFiscalYearTargetTerminal(
// `currentTargetId` is a recovery pointer, not a record of the last write.
// Leaving it on a completed target made an interrupted worker window name a
// return that had already succeeded as the affected target.
if (POSITIVE_TARGET_STATUSES.has(effectiveStatus)) delete terminal.currentTargetId;
if (isResolvedFullFiscalYearTargetStatus(effectiveStatus)) delete terminal.currentTargetId;
return terminal;
}

Expand Down Expand Up @@ -481,9 +477,10 @@ function ledgerStatus(
targets: readonly FiledReturnsAllSupportedFullFiscalYearTarget[],
lastStatus: FiledReturnsFullFiscalYearTargetStatus,
): FiledReturnsAllSupportedFullFiscalYearLedger["status"] {
if (targets.every((target) => POSITIVE_TARGET_STATUSES.has(target.status))) return "complete";
if (targets.every((target) => isResolvedFullFiscalYearTargetStatus(target.status)))
return "complete";
if (lastStatus === "cancelled") return "cancelled";
if (lastStatus === "manually-observed" || POSITIVE_TARGET_STATUSES.has(lastStatus))
if (lastStatus === "manually-observed" || isResolvedFullFiscalYearTargetStatus(lastStatus))
return "partial";
return "blocked";
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import type {
FiledReturnsAllSupportedFullFiscalYearFlowSummary,
FiledReturnsAllSupportedFullFiscalYearTargetEvidence,
FiledReturnsDownloadScope,
FiledReturnsFullFiscalYearTargetStatus,
PortalFlowStepResult,
} from "../connectors/gst/filed-returns-contracts";
import { isResolvedFullFiscalYearTargetStatus } from "../connectors/gst/filed-returns-contracts";
import { filedReturnScopeId } from "../connectors/gst/filed-returns-return-descriptors";
import {
allSupportedExplicitRetryTarget,
Expand All @@ -22,11 +22,6 @@ import type {
FiledReturnsAllSupportedFullFiscalYearTarget,
} from "./filed-returns-all-supported-full-fiscal-year-validation";

const POSITIVE_TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"downloaded",
"not-filed",
]);

export interface AllSupportedFullFiscalYearCurrentStateDeps {
storageKeys: { allSupportedFullFiscalYearLedgerIndex?: string; activeRun?: string };
now?: () => Date;
Expand Down Expand Up @@ -129,7 +124,7 @@ export function toAllSupportedFullFiscalYearSummary(
...(ledger.status === "complete" ? { completedAt: ledger.updatedAt } : {}),
updatedAt: ledger.updatedAt,
completedTargetIds: ledger.targets
.filter((target) => POSITIVE_TARGET_STATUSES.has(target.status))
.filter((target) => isResolvedFullFiscalYearTargetStatus(target.status))
.map((target) => target.targetId),
Comment thread
lamemustafa marked this conversation as resolved.
targetEvidence: ledger.targets.map((target) => ({
targetId: target.targetId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import type {
FiledReturnsDownloadDiagnostic,
FiledReturnsFullFiscalYearTargetStatus,
} from "../connectors/gst/filed-returns-contracts";
import {
isResolvedFullFiscalYearTargetStatus,
isFiledReturnsFullFiscalYearTargetStatus,
} from "../connectors/gst/filed-returns-contracts";
import type {
FiledReturnsArtifactType,
FiledReturnsConcreteArtifactType,
Expand Down Expand Up @@ -119,21 +123,6 @@ export type AllSupportedFullFiscalYearZipPhase =
| "cleaned";

const MAX_SAFE_MESSAGE_LENGTH = 500;
const TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"pending",
"running",
"downloaded",
"manually-observed",
"not-filed",
"download-unconfirmed",
"blocked",
"failed",
"cancelled",
]);
const POSITIVE_TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"downloaded",
"not-filed",
]);
const ZIP_PHASES = new Set<AllSupportedFullFiscalYearZipPhase>([
"export-pending",
"export-retry-pending",
Expand Down Expand Up @@ -281,7 +270,7 @@ export function isAllSupportedFullFiscalYearLedger(
return !(
ledger.zipPhase &&
ZIP_PHASES_REQUIRING_COMPLETED_TARGETS.has(ledger.zipPhase) &&
!ledger.targets.every((target) => POSITIVE_TARGET_STATUSES.has(target.status))
!ledger.targets.every((target) => isResolvedFullFiscalYearTargetStatus(target.status))
);
}

Expand Down Expand Up @@ -491,7 +480,9 @@ function isTarget(
target.returnType !== planTarget.returnType ||
target.artifactType !== planTarget.artifactType ||
!sameArtifacts(target.concreteArtifactTypes, planTarget.concreteArtifactTypes) ||
!TARGET_STATUSES.has(target.status as FiledReturnsFullFiscalYearTargetStatus) ||
!isFiledReturnsFullFiscalYearTargetStatus(
target.status as FiledReturnsFullFiscalYearTargetStatus,
) ||
!isAttemptCount(target.attempts) ||
!isBoundedString(target.safeMessage, 1, MAX_SAFE_MESSAGE_LENGTH) ||
!isCanonicalTimestamp(target.updatedAt) ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { browser } from "wxt/browser";
import type { PortalFlowStepResult } from "../connectors/gst/filed-returns-contracts";
import type { PackOffscreenFiledReturnZipExpectedEntry } from "../connectors/gst/offscreen-blob-url";
import type { FiledReturnsSummaryPlanEntry } from "../connectors/gst/filed-returns-summary-sheet";
import { filedReturnsSummaryOutcomeCategory } from "../connectors/gst/filed-returns-summary-sheet";
import type { FiledReturnsSummaryStatus } from "../connectors/gst/filed-returns-summary-status";
import { canCompleteAllSupportedFullFiscalYearLedger } from "./filed-returns-all-supported-full-fiscal-year-ledger";
import {
Expand Down Expand Up @@ -212,12 +213,11 @@ function allSupportedFullFiscalYearStagingRequirement(
safeAllSupportedFullFiscalYearZipEntryPath(target, artifactType, ".xlsx"),
];
}
const outcomeCategory =
target.status === "not-filed"
? "not-filed"
: signals.has(`filed-return-artifact-unavailable:${artifactType}`)
? "artifact-unavailable"
: "staged";
const outcomeCategory = filedReturnsSummaryOutcomeCategory(
target.status,
signals,
artifactType,
);
summaryPlan.push({
artifactType,
entryNames: outcomeCategory === "staged" ? expectedEntry.entryNames : [],
Expand Down
15 changes: 6 additions & 9 deletions src/background/filed-returns-all-supported-full-fiscal-year.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import type {
FiledReturnsAllSupportedFullFiscalYearFlowSummary,
FiledReturnsAllSupportedFullFiscalYearRequest,
FiledReturnsDownloadScope,
FiledReturnsFullFiscalYearTargetStatus,
PortalFlowStepResult,
} from "../connectors/gst/filed-returns-contracts";
import { isResolvedFullFiscalYearTargetStatus } from "../connectors/gst/filed-returns-contracts";
import { concreteFiledReturnsArtifactTypesForSelection } from "../connectors/gst/filed-returns-artifacts";
import {
expandAllSupportedFullFiscalYearTargetPlan,
Expand Down Expand Up @@ -61,10 +61,6 @@ type AllSupportedRunnerDeps = FiledReturnsFlowRunnerDeps & {

type SystemErrorPredecessor = FiledReturnsFlowStepCategory | "initial";

const POSITIVE_TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"downloaded",
"not-filed",
]);
const MAX_DURABLE_FLOW_SIGNALS = 32;

/**
Expand Down Expand Up @@ -377,8 +373,9 @@ async function continueSavedAllSupportedFullFiscalYearRun(
}
if (
ledger.status === "partial" &&
ledger.targets.every((target) =>
["pending", ...POSITIVE_TARGET_STATUSES].includes(target.status),
ledger.targets.every(
(target) =>
target.status === "pending" || isResolvedFullFiscalYearTargetStatus(target.status),
)
) {
return runAllSupportedFullFiscalYearTargets(deps, ledger, runSinglePeriod);
Expand Down Expand Up @@ -568,7 +565,7 @@ async function runAllSupportedFullFiscalYearTargets(
const persistedTarget = ledger.targets.find(
(target) => target.targetId === nextTarget.targetId,
);
if (persistedTarget && POSITIVE_TARGET_STATUSES.has(persistedTarget.status)) continue;
if (persistedTarget && isResolvedFullFiscalYearTargetStatus(persistedTarget.status)) continue;
return allSupportedResponse(deps, ledger, flowStep);
}
}
Expand Down Expand Up @@ -717,7 +714,7 @@ function toAllSupportedSummary(
...(ledger.status === "complete" ? { completedAt: ledger.updatedAt } : {}),
updatedAt: ledger.updatedAt,
completedTargetIds: ledger.targets
.filter((target) => POSITIVE_TARGET_STATUSES.has(target.status))
.filter((target) => isResolvedFullFiscalYearTargetStatus(target.status))
.map((target) => target.targetId),
targetEvidence: ledger.targets.map((target) => ({
targetId: target.targetId,
Expand Down
14 changes: 2 additions & 12 deletions src/background/filed-returns-durable-summary.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
hasPositiveFiledReturnsDownloadEvidence,
isValidFiledReturnsDownloadDiagnosticState,
} from "./filed-returns-download-diagnostic-state";
import { isFiledReturnsFullFiscalYearTargetStatus } from "../connectors/gst/filed-returns-contracts";

const SUMMARY_KEYS = [
"artifactAcquisitionCompletion",
Expand Down Expand Up @@ -81,17 +82,6 @@ const FLOW_STATES = new Set<PortalFlowStepResult["state"]>([
"unsupported-page",
"user-action-required",
]);
const TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"blocked",
"cancelled",
"download-unconfirmed",
"downloaded",
"failed",
"manually-observed",
"not-filed",
"pending",
"running",
]);

export function parseDurableFiledReturnsFlowSummary(
input: unknown,
Expand Down Expand Up @@ -357,7 +347,7 @@ function parseRecovery(
}
if (
typeof recovery.targetStatus !== "string" ||
!TARGET_STATUSES.has(recovery.targetStatus as FiledReturnsFullFiscalYearTargetStatus)
!isFiledReturnsFullFiscalYearTargetStatus(recovery.targetStatus)
) {
return null;
}
Expand Down
18 changes: 8 additions & 10 deletions src/background/filed-returns-full-fiscal-year-ledger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import type {
FiledReturnsLedgerPlanTarget,
PortalFlowStepResult,
} from "../connectors/gst/filed-returns-contracts";
import { isResolvedFullFiscalYearTargetStatus } from "../connectors/gst/filed-returns-contracts";
import {
normaliseFiledReturnsArtifactType,
type FiledReturnsArtifactType,
Expand Down Expand Up @@ -34,10 +35,6 @@ export {
} from "./filed-returns-full-fiscal-year-validation";

const ACTIVE_LEDGER_STALE_MS = 30_000;
const POSITIVE_TARGET_STATUSES = new Set<FiledReturnsFullFiscalYearTargetStatus>([
"downloaded",
"not-filed",
]);

export function createFullFiscalYearLedger(
scope: FiledReturnsDownloadScope,
Expand Down Expand Up @@ -230,7 +227,7 @@ export function canCompleteFullFiscalYearLedger(ledger: FiledReturnsFullFiscalYe
return (
hasCanonicalFullFiscalYearTargetPlan(ledger) &&
ledger.targets.length > 0 &&
ledger.targets.every((target) => POSITIVE_TARGET_STATUSES.has(target.status))
ledger.targets.every((target) => isResolvedFullFiscalYearTargetStatus(target.status))
);
}

Expand All @@ -240,15 +237,15 @@ export function hasInconsistentFullFiscalYearCompletion(
): boolean {
return (
ledger.status === "complete" &&
ledger.targets.some((target) => !POSITIVE_TARGET_STATUSES.has(target.status))
ledger.targets.some((target) => !isResolvedFullFiscalYearTargetStatus(target.status))
);
}

export function hasActionRequiredFullFiscalYearTarget(
ledger: FiledReturnsFullFiscalYearLedger,
): boolean {
return ledger.targets.some(
(target) => target.status !== "pending" && !POSITIVE_TARGET_STATUSES.has(target.status),
(target) => target.status !== "pending" && !isResolvedFullFiscalYearTargetStatus(target.status),
);
}

Expand Down Expand Up @@ -347,7 +344,7 @@ export function markFullFiscalYearTargetTerminal(
["filed-return-durable-status-rejected"],
)),
...(diagnosticState ?? {}),
...(POSITIVE_TARGET_STATUSES.has(effectiveStatus) ? { completedAt: timestamp } : {}),
...(isResolvedFullFiscalYearTargetStatus(effectiveStatus) ? { completedAt: timestamp } : {}),
updatedAt: timestamp,
};
});
Expand Down Expand Up @@ -434,10 +431,11 @@ function ledgerStatus(
targets: readonly FiledReturnsFullFiscalYearTarget[],
lastStatus: FiledReturnsFullFiscalYearTargetStatus,
): FiledReturnsFullFiscalYearLedger["status"] {
if (targets.every((target) => POSITIVE_TARGET_STATUSES.has(target.status))) return "complete";
if (targets.every((target) => isResolvedFullFiscalYearTargetStatus(target.status)))
return "complete";
if (lastStatus === "cancelled") return "cancelled";
if (lastStatus === "manually-observed") return "partial";
if (POSITIVE_TARGET_STATUSES.has(lastStatus)) return "partial";
if (isResolvedFullFiscalYearTargetStatus(lastStatus)) return "partial";
return "blocked";
}

Expand Down
Loading
Loading