What
submitPortalGstr3bForm in src/connectors/gst/filed-returns-api-search.ts builds a form, sets action = "/returns/auth/gstr3b", and submits it — after writing several portal preference keys into localStorage.
That is constructed portal navigation. AGENTS.md prohibits it without qualification:
Construct a portal URL to navigate. Click the portal's own control. One exception, and only one: opening the portal's public landing page in a new tab, in direct response to an explicit user action. Everything else is prohibited whether or not a session is active … Two constructed in-flow navigations were WAF-rejected and one ended a live session.
Status
Pre-existing, not introduced by any recent PR. This path predates #304 and ships in the published package. #304 removed it — correctly, on this count — but removed the acquisition path with it and broke filed-return selection entirely (#306), so it was reverted in #307. The revert restores this violation along with the working path.
So the current state is: Pack works, and the way it works includes a prohibited navigation that has previously ended a live session.
What it needs
The portal renders its own control for this transition; use it. That is the whole rule — the prohibition exists because the constructed route is what the WAF rejects.
Removing it is not optional, but removing it without a working replacement is what #304 did. The replacement has to be validated by a live authenticated run before it merges, not after.
Priority
High. This is a session-ending risk for a user in the middle of a compliance download, and the failure would look to them like the portal logging them out for no reason.
Related: #306 (why #304 was reverted), #307 (the revert).
What
submitPortalGstr3bForminsrc/connectors/gst/filed-returns-api-search.tsbuilds a form, setsaction = "/returns/auth/gstr3b", and submits it — after writing several portal preference keys intolocalStorage.That is constructed portal navigation.
AGENTS.mdprohibits it without qualification:Status
Pre-existing, not introduced by any recent PR. This path predates #304 and ships in the published package. #304 removed it — correctly, on this count — but removed the acquisition path with it and broke filed-return selection entirely (#306), so it was reverted in #307. The revert restores this violation along with the working path.
So the current state is: Pack works, and the way it works includes a prohibited navigation that has previously ended a live session.
What it needs
The portal renders its own control for this transition; use it. That is the whole rule — the prohibition exists because the constructed route is what the WAF rejects.
Removing it is not optional, but removing it without a working replacement is what #304 did. The replacement has to be validated by a live authenticated run before it merges, not after.
Priority
High. This is a session-ending risk for a user in the middle of a compliance download, and the failure would look to them like the portal logging them out for no reason.
Related: #306 (why #304 was reverted), #307 (the revert).