fix(gst): consolidate scoped artifact refusal and recovery handling - #359
fix(gst): consolidate scoped artifact refusal and recovery handling#359lamemustafa wants to merge 48 commits into
Conversation
|
@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. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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".
| const declined = retainCheckpointForRecovery | ||
| ? null | ||
| : await postClickBlockedStep({ |
There was a problem hiding this comment.
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 👍 / 👎.
There was a problem hiding this comment.
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.
| if ( | ||
| returnType === "GSTR-2B" && | ||
| step.safeSignals.some( | ||
| (signal) => | ||
| signal === "filed-gstr2b-not-generated" || signal === "artifact-filed-gstr2b-not-generated", |
There was a problem hiding this comment.
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 👍 / 👎.
There was a problem hiding this comment.
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.
|
@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. |
There was a problem hiding this comment.
💡 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".
|
@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. |
There was a problem hiding this comment.
💡 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".
|
@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. |
|
@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. |
There was a problem hiding this comment.
💡 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".
|
@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. |
There was a problem hiding this comment.
💡 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".
|
@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. |
There was a problem hiding this comment.
💡 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".
|
@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. |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
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-generatedevidence 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
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:preflightwas run before editing/push, or the skip reason is documented.Sanchika Adoption Gate
Not applicable: no Sanchika package or guidance adoption.
@sanchika/*packages or copied Sanchika guidance, Iread
sanchika/docs/adoption-pack.mdin the coordinated parent worktree.and records the Sanchika commit or copied guidance used.
../sanchika,sanchika/packages/*/src, or parentsource 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.
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.
Chrome Web Store Impact
Full-year/all-supported surfaces remain source-only. No Store submission, release readiness or broader support claim is made.
docs/PUBLICATION_READINESS.mdis checked.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-lockfilenode scripts/run-dependency-audit.mjs(runs the required high-severity audit)pnpm exec wxt preparepnpm exec prettier --check .pnpm exec eslint . --max-warnings 0pnpm exec tsc --noEmitpnpm exec vitest runpnpm exec wxt buildnode scripts/verify-extension-package.mjs .output/chrome-mv3pnpm exec wxt zipnode scripts/verify-extension-zip.mjsnode scripts/write-release-provenance.mjsnode scripts/verify-github-release-assets.mjs --tag <tag> --zip <zip> --checksum <sha256> --provenance <json>when release assets existnode scripts/publish-chrome-web-store.mjs --zip .output/<zip> --provenance .output/pack-release-provenance.v1.json --publisher-id <id> --dry-run truegit diff --checkpnpm review:gate -- --strict-head-review --wait-head-review-ms 180000before merge/readiness claim; a missing Codex review blocks readiness:Artifact Evidence
a0f2f865aaa62726aa9aa995a834bfe930537867e077b7f51c222ec3ea2ffdee.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.
646346e: Source:src/entrypoints/background.ts. Synthetic regressions:tests/background/background-failure-fingerprint.test.ts.646346e: Source:src/connectors/gst/filed-returns-durable-signals.ts. Synthetic regressions:tests/connectors/filed-returns-durable-signals.test.ts.646346e: Source:src/background/background-failure-fingerprint.ts. Synthetic regressions:tests/background/background-failure-fingerprint.test.ts.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.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.646346e: Source:src/background/filed-returns-download-trigger.ts. Synthetic regressions:tests/background/filed-returns-download-trigger-acquisition.test.ts.646346e: Manual authenticated qualification and accurate build identity remain required; no new capture entry is claimed. Follow-up remains on the linked original PR.646346e: Source:src/connectors/gst/artifact-validation.ts. Synthetic regressions:tests/connectors/artifact-validation.test.ts.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.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.646346e: Source:src/background/filed-returns-download-trigger.ts. Synthetic regressions:tests/background/filed-returns-download-trigger-acquisition.test.ts.646346e: Source:src/background/filed-returns-download-trigger.ts. Synthetic regressions:tests/background/filed-returns-download-trigger-acquisition.test.ts.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.646346e: Source:src/connectors/gst/artifact-validation.ts. Synthetic regressions:tests/connectors/artifact-validation.test.ts.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.not-generatedledger entries646346e: 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.646346e: Source:src/background/filed-returns-single-period-bundle-ledger.ts. Synthetic regressions:tests/background/filed-returns-single-period-bundle-ledger.test.ts.646346e: Manual authenticated qualification and accurate build identity remain required; no new capture entry is claimed. Follow-up remains on the linked original PR.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.not-generatedtargets out of restaging646346e: 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.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.646346e: Source:src/background/filed-returns-single-period-bundle-ledger.ts. Synthetic regressions:tests/background/filed-returns-single-period-bundle-ledger.test.ts.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.646346e: Existing maintainer approval in this thread covers the bounded status. No additional persistence is introduced.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.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.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.646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.646346e: Manual authenticated qualification and accurate build identity remain required; no new capture entry is claimed. Follow-up remains on the linked original PR.646346e: Source:src/connectors/gst/gstr2b-summary.ts. Synthetic regressions:tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.646346e: Source:src/connectors/gst/gstr2b-flow.ts. Synthetic regressions:tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.646346e: Source:src/connectors/gst/gstr2b-flow.ts. Synthetic regressions:tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.646346e: Source:tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts. Synthetic regressions: privacy review of the synthetic fixture.646346e: Proposed capture-document changes excluded entirely; both evidence docs match master. Fresh permitted evidence remains a merge hold.646346e: Source:src/connectors/gst/gstr2b-flow.ts. Synthetic regressions:tests/connectors/filed-returns-flow-gstr2b-not-generated.test.ts.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.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.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.39db6f562632f74020aa0ddad062b1b151fb1a66: canonical refusal binder requires the GSTR-2B summary route plus visible-period binding. Wrong-route regression fails closed.39db6f562632f74020aa0ddad062b1b151fb1a66: set recovery retention before awaiting terminal persistence; only confirmed persistence permits clear. Rejected storage-write regression observes no checkpoint clear.7b50fd2: unavailable bundle state now stores the exact compatible proof and refuses missing or incompatible restored records.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.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.7b50fd2: persist fixed Pack-owned GSTR-1 Excel or GSTR-2B route/period proof with unavailable state; restore accepts only an exact compatible set.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 requirescounts.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: