The client portal¶
The portal is PEART's second surface, served by a process of its own, and the only one a person from outside the consultancy reaches. It exists so the client can follow the work without waiting for the PDF, and so they can record what they say they have fixed.
Portal accounts are not administered here: they belong to the client and live in that client's own edit drawer, with the lifecycle the users page describes.
What the client sees¶
Their own client's engagements, with period and finding counts by severity. Inside an engagement, the identification, the scope, the assets and the list of published findings, filtered by severity, class and verification state.
On a finding, the client-facing fields, the evidence, the retest history and the fix declaration they have recorded themselves.
On the reports tab, only released documents, each with the file's hash. Generating a report delivers nothing: release is a separate act, and withdrawal stops the document being served without it ceasing to exist for the consultancy.
What they do not see, and why¶
Drafts, internal fields, the name of whoever is editing, the list of changed fields and the original evidence all stay out. What the portal serves of an evidence item is the rendition, with the redaction already applied destructively: the box is not a layer you can peel off, because a box you can peel off is not a box.
Asking for another client's engagement answers "not found", never "forbidden". Answering "forbidden" would confirm that the engagement exists, and the difference between the two answers is information that is not the asker's to have. The attempt is recorded in the audit trail as denied.
The "under revision" mark¶
A published finding carrying an unpublished change shows a neutral mark. It says the consultancy is working on it, not what they are working on: not the field, not the new text, not who is editing.
Writing evidence lights it, and that includes attaching, removing, recaptioning, reordering and reannotating. The reason is that the client sees the rendition, and it is only regenerated on publish; until then, the image they hold is the previous one. The mark goes out when the consultancy republishes.
The fix declaration¶
It is the portal's only content write. The process has always had to write to keep a session, and so it holds two connections to the database: the primary one, for reading, opened read-only through its own connection string, and a second, writable one, reached through an interface with a fixed set of methods rather than the whole store. The declaration goes through that second one, under the same discipline as the session, and the reading connection stays read-only.
The client records what they say they did in one of three states, fixed, mitigated or withdrawn, with an optional free-text note.
It is the client's assertion and nothing more. It does not change verification, which is what the consultancy confirmed in a retest, nor disposition, which is what the consultancy declared about the finding standing. The three axes coexist and are read together: a finding can be declared fixed by the client and still unverified, and that combination is useful information, not a contradiction. Writing the client's assertion into either of the other two would make the report say "verified" with nobody having verified.
For the same reason, the declaration does not enter the published revision and does not reach the report. What the document says about remediation still comes from a retest.
A declaration is neither deleted nor edited. Correcting one is declaring again, and taking one back is declaring "withdrawn", which is the absence of a claim stated as a claim. The row that said "fixed" stays, so nobody takes back what they said after a retest went against it, and the history stays readable. It is the same reasoning that makes a published revision immutable, applied to the other side of the conversation.
What the consultancy sees when a declaration arrives¶
The findings list carries the state of the newest declaration and when it was made, with its own mark for each of the three states. Finding out that something arrived does not mean opening findings one by one.
The client's note stays on the finding, not on the list. It is the first text a person from outside writes for a pentester to read, and the place where it appears is the place where the handling of that text is decided and tested. The list does not show who declared either.