Skip to content

fix(gst): consolidate scoped artifact refusal and recovery handling - #359

Draft
lamemustafa wants to merge 48 commits into
masterfrom
tapish-codex/runtime-stack-reviewed
Draft

fix(gst): consolidate scoped artifact refusal and recovery handling#359
lamemustafa wants to merge 48 commits into
masterfrom
tapish-codex/runtime-stack-reviewed

Conversation

@lamemustafa

@lamemustafa lamemustafa commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Summary

Consolidate the corrected final changes from #353, #354, #355, #356 and #357 against current master. Bound artifact refusals retain their distinct meaning through direct runs, saved plans and discarded-run summaries. Bundle recovery now preserves exact fixed GSTR-1/GSTR-2B proof signals and rejects missing or incompatible records. Refusal proof is bound to the selected return and artifact, and terminal state is persisted before the acquisition checkpoint is cleared. An uncertain acquisition retains its original failure and recovery checkpoint; a later refusal observation cannot replace it with terminal absence.

Draft / merge held: authenticated runtime qualification is outstanding under docs/LIVE_EVIDENCE_PROTOCOL.md. Two functional gaps remain held: recognizing a refusal after uncertain acquisition requires stronger side-effect evidence, and GSTR-1 Excel-only full-year absence needs a separately approved durable-status design. The approved evidence schema V2 counts GSTR-2B not-generated periods without inventing download rows; V1 records remain unchanged. Original PRs preserve their history but are superseded by this candidate.

Root Cause / Decision Record

The stacked PRs split shared acquisition and outcome logic across dependent heads. Several predecessors still require descendant fixes, and the final stack tip retained cross-scope, recovery and privacy defects. A single corrected diff permits review against one protected base without merging a known-broken predecessor.

The final implementation uses canonical status/proof helpers instead of duplicating outcome rules. It filters unusable controls, normalizes supported route variants, keeps compact-envelope acceptance return-scoped, and preserves recovery identity until the terminal result is durable. Candidate capture narratives were excluded; no new authenticated evidence is claimed.

The approved bounded not-generated evidence choice is schema V2 only: it adds a required aggregate for GSTR-2B, preserves V1 records without synthesizing a field, and creates no download-evidence row for an unavailable period.

Scope

  • Runtime: target-bound acquisition/refusal handling, canonical durable outcomes, safe diagnostics and existing result labels.
  • Tests: synthetic actionability/route/shape decoys, proof and artifact mismatches, storage boundary failures, durable round trips and rendered evidence labels.
  • Docs/governance: document the schema V2 GSTR-2B aggregate without changing live-evidence or release claims.
  • Explicitly out of scope: broader Store scope, new dependencies, permissions/CSP changes, unattended portal qualification, release publication and historical evidence reconstruction.

Pack Workflow Preflight

Preflight passed before materializing this lane from master c5df53634ac8a1479779d53bdeb5c65507c5209f. The public branch contains only the final runtime/test changes with proposed capture-document changes excluded, rather than the stack's intermediate documentation snapshots.

  • pnpm workflow:preflight was run before editing/push, or the skip reason is documented.
  • This PR was opened from a Pack branch, not master.
  • I checked latest master Pack AGENTS guidance or recorded the stale-guidance warning.
  • PR body keeps the required Pack privacy/review/verification checklist visible.

Sanchika Adoption Gate

Not applicable: no Sanchika package or guidance adoption.

  • If this PR consumes @sanchika/* packages or copied Sanchika guidance, I
    read sanchika/docs/adoption-pack.md in the coordinated parent worktree.
  • If this PR consumes Sanchika, it links ComplyEaze and Axal completion evidence
    and records the Sanchika commit or copied guidance used.
  • This PR does not import ../sanchika, sanchika/packages/*/src, or parent
    source paths.

Privacy And Data-Flow Impact

No new external service, analytics, permission or host is introduced. The changed acquisition paths stay within the approved user-initiated portal flow. Scope/status selections remain bounded; no sensitive persistence expansion is authorized or claimed.

  • No new browser permissions.
  • No new host permissions.
  • No new network calls.
  • No analytics, telemetry, ads, or session replay.
  • No credential, OTP, CAPTCHA, cookie, token, GST file, or taxpayer-data capture.
  • Public copy and privacy declarations are updated if behaviour changed.

Sensitive Surface Review

The binder checks visible target identity and compatible return/artifact scope. Uncertain downloads retain review/recovery state. A refusal means no artifact was generated; it is never counted as a saved file. Local source reviews and synthetic tests do not replace the required authenticated check.

  • Current tab / portal target binding is preserved or intentionally changed.
  • Download completion remains evidence-backed and fail-closed.
  • Ambiguous side-effect delivery cannot be reported as confirmed success.
  • Service-worker durability impact is understood and documented.
  • Real taxpayer data, local paths, raw URLs/referrers, and portal HTML are absent from the diff.

Chrome Web Store Impact

Full-year/all-supported surfaces remain source-only. No Store submission, release readiness or broader support claim is made.

  • This PR does not expand beyond the existing Chrome Web Store V0 listing unless every gate in docs/PUBLICATION_READINESS.md is checked.
  • Full fiscal year remains source-only and excluded from the next packaged Store build until its evidence gates are recorded.
  • Store copy, README status, Privacy QA, and reviewer instructions were reviewed if user-facing behavior changed.
  • CI ZIP creation, provenance, and protected publishing are treated as release evidence, not manual store-submission sign-off.
  • PR title uses Conventional Commits so Release Please can bump Pack after merge.

Verification

The correction requires the existing target-binding proof for recovered single-period refusals and uses the canonical absence message in the popup. A completed refusal means no artifact is available. It does not claim file delivery.

A current bound all-format refusal may persist completion and clear the exact ledger. A recovered ledger restores only when it retains the exact compatible GSTR-1 Excel detail-period proof or GSTR-2B route-and-visible-period proof; missing or incompatible records remain held. Completion-write or exact-clear failure remains visibly blocked; no empty ZIP or portal replay occurs.

The latest correction is integrated at 7b69dadf29fa0ea0c5dcf058e0fcf8f04b1c13c8. Final-head local verification passed: 183 files / 3490 tests, TypeScript, lint, formatting, workflow preflight, package verification, and exact ZIP verification. The V2 validator accepts all-not-generated GSTR-2B pass evidence only with explicit counts and no fabricated rows; V1 rejects the new field. The bundle ledger restores only exact compatible proof. Independent privacy and security review are clear. These are source and synthetic checks, not authenticated portal qualification.

  • pnpm install --frozen-lockfile
  • node scripts/run-dependency-audit.mjs (runs the required high-severity audit)
  • pnpm exec wxt prepare
  • pnpm exec prettier --check .
  • pnpm exec eslint . --max-warnings 0
  • pnpm exec tsc --noEmit
  • pnpm exec vitest run
  • pnpm exec wxt build
  • node scripts/verify-extension-package.mjs .output/chrome-mv3
  • pnpm exec wxt zip
  • node scripts/verify-extension-zip.mjs
  • node scripts/write-release-provenance.mjs
  • node scripts/verify-github-release-assets.mjs --tag <tag> --zip <zip> --checksum <sha256> --provenance <json> when release assets exist
  • node scripts/publish-chrome-web-store.mjs --zip .output/<zip> --provenance .output/pack-release-provenance.v1.json --publisher-id <id> --dry-run true
  • git diff --check
  • pnpm review:gate -- --strict-head-review --wait-head-review-ms 180000 before merge/readiness claim; a missing Codex review blocks readiness:

Artifact Evidence

  • CI run: prior hosted Verify passed at 84d292e; fresh hosted checks and a current-head review are still required for 7b69dad.
  • ZIP artifact: local package/ZIP verification passed; no publication.
  • ZIP SHA-256: a0f2f865aaa62726aa9aa995a834bfe930537867e077b7f51c222ec3ea2ffdee.
  • Clean source/tag or head SHA: 7b69dadf29fa0ea0c5dcf058e0fcf8f04b1c13c8.

PR Review Follow-Up

The register tracks all 39 original automated asks and eighteen findings from seven hosted reviews of this consolidated candidate (57 total). Original threads stay on their original PRs. Live/capture asks remain explicit follow-ups; synthetic fixtures are not live evidence.

  • GitHub Actions completed.
  • Autogenerated Codex/bot review comments inspected after checks completed for the latest head SHA.
  • Inline review threads are resolved, outdated, or answered with evidence.
  • No commits were pushed after the last required human/bot review without re-review.
  • Any follow-up PRs or issues are listed here instead of being left implicit.
Thread/comment Disposition Commit or evidence
#353: Log only a redacted background failure fingerprint fixed in consolidated candidate 646346e: Source: src/entrypoints/background.ts. Synthetic regressions: tests/background/background-failure-fingerprint.test.ts.
#353: Keep rejected durable signals out of logs fixed in consolidated candidate 646346e: Source: src/connectors/gst/filed-returns-durable-signals.ts. Synthetic regressions: tests/connectors/filed-returns-durable-signals.test.ts.
#353: Whitelist fingerprint values before rendering them fixed in consolidated candidate 646346e: Source: src/background/background-failure-fingerprint.ts. Synthetic regressions: tests/background/background-failure-fingerprint.test.ts.
#353: Bind the declined dialog to the current artifact target source fix with explicit functional hold 646346e: Source: src/background/filed-returns-download-trigger.ts. Synthetic regressions: tests/background/filed-returns-download-trigger-acquisition.test.ts. Definitive-failure handling is covered; post-click generation-timeout refusal recognition remains HELD under r3996067620. The synthetic definitive-failure case does not claim clicked-control/live proof.
#353: Clear the intent after a definitive portal refusal source fix with explicit functional hold 646346e: Source: src/background/filed-returns-download-trigger.ts. Synthetic regressions: tests/background/filed-returns-download-trigger-acquisition.test.ts. Definitive-failure handling is covered; post-click generation-timeout refusal recognition remains HELD under r3996067620. The synthetic definitive-failure case does not claim clicked-control/live proof.
#353: Preserve the acquisition failure when inspection messaging fails fixed in consolidated candidate 646346e: Source: src/background/filed-returns-download-trigger.ts. Synthetic regressions: tests/background/filed-returns-download-trigger-acquisition.test.ts.
#353: Record the new live capture in the portal findings follow-up / HELD 646346e: Manual authenticated qualification and accurate build identity remain required; no new capture entry is claimed. Follow-up remains on the linked original PR.
#353: Preserve the oversized-response resource bound fixed in consolidated candidate 646346e: Source: src/connectors/gst/artifact-validation.ts. Synthetic regressions: tests/connectors/artifact-validation.test.ts.
#353: Verify the direct PDF control before skipping View Summary fixed in consolidated candidate 646346e: Source: src/connectors/gst/filed-returns-detail-navigation.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr1-acquisition.test.ts, tests/connectors/artifact-source.test.ts.
#353: Filter direct PDF matches for actionability fixed in consolidated candidate 646346e: Source: src/connectors/gst/portal-artifact-endpoints.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr1-acquisition.test.ts, tests/connectors/artifact-source.test.ts.
#353: Connect GSTR-2B decline detection to the content handler fixed in consolidated candidate 646346e: Source: src/background/filed-returns-download-trigger.ts. Synthetic regressions: tests/background/filed-returns-download-trigger-acquisition.test.ts.
#353: Persist the decline before clearing its checkpoint fixed in consolidated candidate 646346e: Source: src/background/filed-returns-download-trigger.ts. Synthetic regressions: tests/background/filed-returns-download-trigger-acquisition.test.ts.
#353: Normalize valid GSTR-1 route variants before matching surfaces fixed in consolidated candidate 646346e: Source: src/connectors/gst/artifact-source.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr1-acquisition.test.ts, tests/connectors/artifact-source.test.ts.
#353: Scope the compact-envelope exception to GSTR-1 fixed in consolidated candidate 646346e: Source: src/connectors/gst/artifact-validation.ts. Synthetic regressions: tests/connectors/artifact-validation.test.ts.
#354: Rebind the refusal to the visible period fixed in consolidated candidate 646346e: Source: src/connectors/gst/filed-returns-post-click-blocked-state.ts. Synthetic regressions: tests/connectors/filed-returns-post-click-blocked-state.test.ts, tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#354: Reject unproved not-generated ledger entries fixed in consolidated candidate 646346e: Source: src/background/filed-returns-full-fiscal-year-validation.ts. Synthetic regressions: tests/background/full-fiscal-year-ledger.test.ts, tests/background/full-fiscal-year-not-generated-round-trip.test.ts.
#354: Carry the raw refusal through bundle recovery fixed in consolidated candidate 646346e: Source: src/background/filed-returns-single-period-bundle-ledger.ts. Synthetic regressions: tests/background/filed-returns-single-period-bundle-ledger.test.ts.
#354: Record the claimed live capture in the findings log follow-up / HELD 646346e: Manual authenticated qualification and accurate build identity remain required; no new capture entry is claimed. Follow-up remains on the linked original PR.
#354: Map resolved refusals in all-supported summaries fixed in consolidated candidate 646346e: Source: src/background/filed-returns-all-supported-full-fiscal-year-summary.ts. Synthetic regressions: tests/background/all-supported-full-fiscal-year-ledger.test.ts.
#354: Keep not-generated targets out of restaging fixed in consolidated candidate 646346e: Source: src/connectors/gst/filed-returns-contracts.ts. Synthetic regressions: tests/connectors/filed-returns-declined-artifact.test.ts, tests/connectors/filed-returns-target-status-behaviour.test.ts.
#354: Retain the no-ZIP signal after cleanup fixed in consolidated candidate 646346e: Source: src/background/filed-returns-full-fiscal-year-summary.ts. Synthetic regressions: tests/background/full-fiscal-year-ledger.test.ts, tests/background/full-fiscal-year-not-generated-round-trip.test.ts.
#354: Bind refusal reasons to the bundle return type fixed in consolidated candidate 646346e: Source: src/background/filed-returns-single-period-bundle-ledger.ts. Synthetic regressions: tests/background/filed-returns-single-period-bundle-ledger.test.ts.
#354: Preserve declined-period evidence after discard fixed in consolidated candidate 646346e: Source: src/background/filed-returns-full-fiscal-year-summary.ts. Synthetic regressions: tests/background/full-fiscal-year-ledger.test.ts, tests/background/full-fiscal-year-not-generated-round-trip.test.ts.
#354: Obtain approval before persisting the new outcome fixed in consolidated candidate 646346e: Existing maintainer approval in this thread covers the bounded status. No additional persistence is introduced.
#354: Replace the captured-live DOM with a synthetic fixture fixed in consolidated candidate 646346e: Source: tests/connectors/filed-returns-post-click-blocked-state.test.ts. Synthetic regressions: tests/connectors/filed-returns-post-click-blocked-state.test.ts, tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#354: Bind not-generated classification to GSTR-2B scope fixed in consolidated candidate 646346e: Source: src/background/filed-returns-full-fiscal-year-summary.ts. Synthetic regressions: tests/background/full-fiscal-year-ledger.test.ts, tests/background/full-fiscal-year-not-generated-round-trip.test.ts.
#354: Complete single-period refusals as unavailable fixed in consolidated candidate 646346e: Source: src/connectors/gst/filed-returns-post-click-blocked-state.ts. Synthetic regressions: tests/connectors/filed-returns-post-click-blocked-state.test.ts, tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#355: Redact authenticated portal routes from the public ledger fixed in consolidated candidate 646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.
#355: Remove taxpayer-specific filing metadata fixed in consolidated candidate 646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.
#355: Record the actual source-surfaces build version follow-up / HELD 646346e: Manual authenticated qualification and accurate build identity remain required; no new capture entry is claimed. Follow-up remains on the linked original PR.
#355: Centralize the GSTR-2B summary-route predicate fixed in consolidated candidate 646346e: Source: src/connectors/gst/gstr2b-summary.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#355: Do not report a no-op history traversal as navigation fixed in consolidated candidate 646346e: Source: src/connectors/gst/gstr2b-flow.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#355: Require visible labels before recording the refusal fixed in consolidated candidate 646346e: Source: src/connectors/gst/gstr2b-flow.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#355: Replace authenticated portal copy with structural descriptions fixed in consolidated candidate 646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.
#355: Remove the live taxpayer period count fixed in consolidated candidate 646346e: Source: tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts. Synthetic regressions: privacy review of the synthetic fixture.
#355: Remove the remaining live GSTR-2B outcome fixed in consolidated candidate 646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.
#355: Complete direct runs for a declined GSTR-2B period fixed in consolidated candidate 646346e: Source: src/connectors/gst/gstr2b-flow.ts. Synthetic regressions: tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.
#356: Preserve not-generated when rebuilding discarded-run evidence fixed in consolidated candidate 646346e: Source: src/background/filed-returns-full-fiscal-year-summary.ts. Synthetic regressions: tests/background/full-fiscal-year-ledger.test.ts, tests/background/full-fiscal-year-not-generated-round-trip.test.ts.
#357: Couple each refusal proof to its return type fixed in consolidated candidate 646346e: Source: src/connectors/gst/filed-returns-declined-artifact.ts. Synthetic regressions: tests/connectors/filed-returns-declined-artifact.test.ts, tests/connectors/filed-returns-target-status-behaviour.test.ts.
r3996067620 HELD; proposed timeout conversion rejected with source evidence 39db6f562632f74020aa0ddad062b1b151fb1a66: generation-timeout has no expected captured artifact URL; a later scoped refusal cannot exclude a native/alternate download side effect. Retain the original outcome/checkpoint without summary or clear. Functional post-click recognition requires stronger acquisition evidence; the synthetic definitive-failure inspection test is explicitly not clicked-control proof.
r3996067623 fixed 39db6f562632f74020aa0ddad062b1b151fb1a66: canonical refusal binder requires the GSTR-2B summary route plus visible-period binding. Wrong-route regression fails closed.
r3996067626 fixed 39db6f562632f74020aa0ddad062b1b151fb1a66: set recovery retention before awaiting terminal persistence; only confirmed persistence permits clear. Rejected storage-write regression observes no checkpoint clear.
r3996067628 fixed 7b50fd2: unavailable bundle state now stores the exact compatible proof and refuses missing or incompatible restored records.
r3996067630 HELD 39db6f562632f74020aa0ddad062b1b151fb1a66: the canonical GSTR-2B-only durable status scope is preserved. GSTR-1 Excel-only full-year refusal completion requires an approved scoped durable design and matching qualification; the functional gap remains open.
r3996159324 fixed 282c48a: a stored complete summary may use the GSTR-1 Excel refusal only for the exact GSTR-1 Excel selection. Regression seeds stale complete records for valid wrong scopes and proves canonical read rejects/removes them; exact Excel remains accepted.
r3996159329 fixed Exact ledger-removal failure remains blocked; restored refusal state now also requires its compatible stored proof.
r3996333176 fixed 7b50fd2: persist fixed Pack-owned GSTR-1 Excel or GSTR-2B route/period proof with unavailable state; restore accepts only an exact compatible set.
r3996333181 fixed ef887f2: both raw flow signals and prefixed reasons must match the return and concrete artifact, and conflicting recognized reasons are rejected. Stored values still require canonical prefixed form. Tests exercise the reported GSTR-1/GSTR-2B prefixed mismatch, inverse stored mismatch, GSTR-1 PDF/Excel mismatch, raw stored rejection and valid canonical restoration.

| r3996415340 | fixed; full local verification passed | 38e0050 / fa5a7b2: original terminal refusal is durable before clear; the clear validates the original action ID, artifact, phase and request time inside the mutation lock. Malformed, different-scope, read/remove and ownership conflicts retain recovery and a canonical blocked summary. Tests cover both return types and same-revision replacement. |
| r3996415342 | fixed; full local verification passed | Central refusal recognizer requires GSTR-1 detail-period proof or both GSTR-2B route and visible-period proof. Six canonical-storage regressions fail on 3aac993 and pass with the correction. No proof is reconstructed from scope-only ledger reasons. |
| r3996415343 | fixed; full local verification passed | 38e0050 / fa5a7b2: session completion writes are restricted to direct browser-download acquisitions. The staged-child regression rejects session writes and verifies that the bound ledger-owned response still returns normally. |
| r3996415346 | fixed; full local verification passed | Canonically bound complete refusals render “No artifact available” with the appropriate absence message. Blocked/unproved states retain recovery presentation. Six rendered/presentation regressions fail on 3aac993 and pass with the correction. |

| r3997195024 | fixed; full local verification passed | 59ea23b / d12a2d2: the shared restored-target parser now requires canonical route and visible-period proof. Both ordinary and all-supported full-year ledger regressions reject missing proof. The test-only overlay on fa5a7b2 fails both reported acceptance cases; the integrated eight-file check passes 405 tests. |
| r3997195031 | fixed; full local verification passed | 789d695 / 7e579b9: clear the exact acquisition checkpoint before the owned local review. Read/remove or ownership failures preserve review and a named canonical blocked summary with resume disabled. Checkpoint writers and exact clears share a mutation queue; an interleaving regression proves a newer same-target intent survives the old clear. Independent privacy/security acceptance passed. |
| r3997195044 | fixed under explicit approval | 9d25865: V2 requires counts.notGenerated, accepts nonzero only for GSTR-2B, preserves/rejects V1 shape exactly, and emits no fictitious rows. |

| r3997319929 | fixed; full local verification passed | ffe16b3 / 7825a90 / 54cd39d: all three ordinary cleanup callers use a wrapper that rejects bounded storage-read/remove failures. Ordinary missing/newer ownership remains a no-op; strict refusal cleanup keeps its structured result and review handling. Real storage tests cover read/remove failures, missing/mismatched/newer records and successful owned clear. Three caller regressions fail on 7e579b9 and pass with this correction. |

| r3997437894 | fixed; full local verification passed | 84d292e: one canonical existing-signal predicate blocks whole-target refusal with retained artifact evidence in both year runners and restored validators. Both refusal spellings stop advancement/export, retain staging and preserve the same returned/stored/reopened reason. Four fresh-run regressions fail at 54cd39d and pass here. No persisted vocabulary or scope expansion; earlier holds remain. |

Screenshots

Synthetic rendered-component regression only: “Not generated” is visible alongside its period, while the saved-file count stays zero. The uncertain-acquisition regression also requires no refusal inspection, no terminal absence persistence and no checkpoint clearing after a generation timeout. Native toolbar and authenticated portal behavior remain outside that check. No real screenshots or downloaded files are included.

Final clean-head 7b69dad Vitest output, last three non-empty lines verbatim:

   Duration  278.57s (tests 94%, import 5%, transform 1%)
    Isolate  183 workers spawned · ~96ms startup each (spawn + environment, per file)
             at least ~17.45s faster with isolate: false — reuses workers across files instead of one per file

@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 646346e against master. This consolidates the corrected final runtime diff from #353–357. All 39 original asks are dispositioned in the body; local full gates and independent security/privacy reviews passed. The PR remains draft for the separately required authenticated runtime qualification.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-12T21:08:54.429435Z 84d292e Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 646346e960

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +700 to +702
const declined = retainCheckpointForRecovery
? null
: await postClickBlockedStep({

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Inspect declined artifacts after the control times out

When the GSTR-1 Excel control opens the no-details dialog, capturePortalPdfBlob receives no blob and returns generation-timeout; shouldRetainArtifactAcquisitionCheckpoint classifies that reason as retained, so this conditional skips postClickBlockedStep in the exact post-click scenario it is intended to recognize. The run therefore remains unreconciled and subsequent retries are blocked instead of recording the artifact as unavailable. The new regression test hides this by mocking control-not-found, which occurs before any click despite the test's claim to exercise the clicked-control path.

AGENTS.md reference: AGENTS.md:L68-L73

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HELD at 39db6f5. The proposed timeout conversion is not safe with the available acquisition evidence: generation-timeout has no expected captured artifact URL, so a later scoped refusal cannot exclude a native or alternate download side effect. The original failure and recovery checkpoint remain; no terminal absence is persisted and no checkpoint is cleared. The synthetic definitive-failure inspection test now explicitly says it is not clicked-control proof. Recognizing this post-click refusal needs stronger side-effect attribution and the required permitted live qualification. This functional gap remains open in the PR body.

Comment thread src/connectors/gst/filed-returns-declined-artifact.ts
Comment thread src/background/filed-returns-download-trigger.ts Outdated
Comment thread src/background/filed-returns-single-period-bundle-ledger.ts Outdated
Comment on lines +169 to +173
if (
returnType === "GSTR-2B" &&
step.safeSignals.some(
(signal) =>
signal === "filed-gstr2b-not-generated" || signal === "artifact-filed-gstr2b-not-generated",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Resolve GSTR-1 Excel refusals in full-year runs

For a full-fiscal-year GSTR-1 Excel-only selection, the newly wired no-e-invoice-details response has state: "blocked" and carries filed-gstr1-excel-no-details-available, but this status mapper only recognizes the GSTR-2B refusal as resolved. With no successfully staged sibling artifact to turn the combined step into downloaded, the runner records this target as blocked and stops at that month instead of recording the Excel artifact as unavailable and continuing the year, even though direct single-period summaries explicitly treat the same refusal as complete.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HELD at 39db6f5. The canonical durable outcome remains scoped to GSTR-2B; this correction does not widen persisted status support. GSTR-1 Excel-only full-year absence needs an explicitly approved scoped durable design and matching qualification. The functional gap remains open and is recorded in the PR body, so this draft is not ready to merge.

@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 39db6f5. The additive correction addresses route-bound GSTR-2B refusal, retention before terminal storage, and zero-artifact bundle cleanup/resume. Two functional findings remain explicitly HELD: refusal conversion after uncertain acquisition and GSTR-1 Excel-only full-year durable absence. Authenticated qualification is also outstanding; this remains a draft. The body dispositions all 44 original and first-review asks.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 39db6f5626

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/background/filed-returns-durable-summary.ts Outdated
Comment thread src/background/filed-returns-selected-artifacts.ts Outdated
@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 282c48a. It fixes the two additional findings: stale wrong-scope Excel-refusal completion and ignored failed ledger cleanup. Six baseline failure cases now pass, with all 204 focused tests green and independent source/privacy review passed. The body dispositions all 46 asks. The two earlier functional holds and authenticated qualification remain explicit, so this stays draft.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 282c48a537

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/background/filed-returns-selected-artifacts.ts Outdated
Comment thread src/background/filed-returns-single-period-bundle-ledger.ts Outdated
@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head ef887f2, especially the two latest fixes: local preflight reconciliation of zero-artifact recovery and strict return/artifact binding of stored refusal reasons. Sixty focused tests pass; the full clean-head checks are running. The PR body dispositions all 48 asks. The two earlier functional holds and authenticated qualification remain explicit; this is still a held draft.

@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 3aac993. The only change after ef887f2 replaces two duplicate recorded-reason literals with the existing canonical helper; the copy guard and runtime semantics are unchanged. The combined correction passed 60 focused tests and the final copy/ledger check passed 47. A fresh full run is underway. All 48 asks are dispositioned, with the two original functional holds and authenticated qualification still explicit. This remains a held draft.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3aac993676

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/background/filed-returns-download-trigger.ts Outdated
Comment thread src/background/filed-returns-durable-summary.ts Outdated
Comment thread src/background/filed-returns-download-trigger.ts Outdated
Comment thread src/background/filed-returns-single-period-summary.ts
@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 7e579b9. Both full-year ledger families now require canonical refusal binding proof, and acquisition-checkpoint cleanup succeeds before the owned local review is removed. Checkpoint writers and exact clears serialize; failed cleanup retains review with resume disabled. All 18 local checks passed on the clean unchanged head, including 183 files / 3467 tests, both package/browser modes and independent privacy/security acceptance. The PR body dispositions all 55 asks. The distinct evidence-count schema and bundle-proof storage remain pending explicit approval; the other functional holds and authenticated qualification remain open. This stays a held draft.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7e579b988e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/background/artifact-acquisition-state.ts
@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 54cd39d. The latest finding is fixed across all three ordinary checkpoint cleanup callers: storage read/remove failures reject with bounded reasons, missing/newer ownership retains the prior no-op, and strict refusal cleanup keeps its structured result. All 18 local checks passed on the clean unchanged head, including 183 files / 3473 tests and both package/browser modes. Independent privacy/security acceptance passed. The PR body dispositions all 56 asks; four earlier functional/approval holds and authenticated qualification remain explicit. This remains a held draft.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 54cd39d994

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/background/filed-returns-full-fiscal-year-summary.ts
@lamemustafa

Copy link
Copy Markdown
Owner Author

@codex review

Please review current head 84d292e. The latest staged-artifact contradiction finding is fixed across both year runners and restored validators using one canonical existing-signal predicate. Both refusal spellings stop at the affected target, retain staging and pending work, avoid ZIP export/discard, and preserve the same returned/stored/reopened reason. Four fresh-run regressions fail at 54cd39d and pass here. All 18 local checks passed on the clean unchanged head, including 183 files / 3487 tests and both package/browser modes. Independent privacy and security acceptance passed. The register covers 57 asks; four earlier functional/approval threads and authenticated qualification remain held. This remains a draft.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: 84d292ec95

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant