Resolutions permissions and lifecycle
Reference Resolutions routes, organization roles, input limits, recipient selection, lifecycle states, counts, and side effects.
Resolutions combines a Venture list with an authenticated resolutions.infra.one workspace. Organization access controls the administrator surface; assigned-voter access is a separate contract.
Routes
| Purpose | Current route |
|---|---|
| Fund list | https://venture.infra.one/app/orgs/:org_slug/funds/:id/cap-table/shareholder-resolutions |
| SPV list | https://venture.infra.one/app/orgs/:org_slug/spvs/:id/cap-table/shareholder-resolutions |
| Create | https://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/new |
| Edit a draft | https://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/:resolution_id/edit |
| View details | https://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/:resolution_id |
| Download a closed votes report | https://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/:resolution_id/votes-report |
The Venture list routes use :id for the selected fund or SPV record ID. Resolutions-host routes use :fund_id for that vehicle ID. Follow the links generated from the intended vehicle’s Shareholder resolutions list. Do not edit a generated Resolutions URL; if the organization or vehicle context looks wrong, return to Venture and reopen the record from the correct list.
Organization permissions
| Role or capability | Supported administrator-surface behavior |
|---|---|
Signed-in organization member with view_resolutions | Browse the organization’s vehicle lists and use supported links to view sent, voided, or closed details, vote progress, response summaries, closed results, and reports. The authorization boundary remains organization-wide, so a draft is not a private author notebook. |
Organization Admin with manage_resolutions | Everything a member can view, plus create and edit drafts, select feeders, send, delete drafts, void sent resolutions, upload or replace closed results, and send results. |
| Guest | Neither view_resolutions nor manage_resolutions; no supported Resolutions access. |
| Account outside the organization | No access to the organization’s Resolutions records. |
The server rechecks the current organization and required capability for every protected page and mutation. A page opened before a role change does not preserve management permission.
The list shows every draft’s title, status, question count, deadline, and created date to organization members, but does not make its title a navigation link for them. A direct draft detail URL is still authorized for a current organization member, so the missing list link is navigation behavior, not a confidentiality boundary. On the first save, the draft document workspace is also shared with the organization’s current members. Draft means unsent and editable, not confidential; keep its title, preamble, voting matters, and uploads suitable for organization-member visibility. Only an Admin can open the edit route or mutate, delete, or send the draft.
Assigned voters use separate answer, sign, and view permissions for their own vote. A vote identifier is not authentication and does not grant organization-admin access.
Fields and upload limits
| Input | Current rule |
|---|---|
| Resolution title | Required to save a draft. Leading and trailing whitespace is removed. |
| Voting deadline | Required to continue or submit and must be a future UTC date when validated. |
| Preamble | Required to continue or submit; Markdown is supported; maximum 10,000 characters. |
| Voting matters | At least one voting matter is required to continue or submit; Markdown is supported; maximum 5,000 characters per matter. Choices are Yes, No, and Abstain. |
| Resolution documents | Up to 20 files in one upload batch; this is a queue limit, not a verified lifetime document cap. Each file is at most 250 MB (250,000,000 bytes). Supported extensions are .pdf, .doc, .docx, .odt, .jpg, .jpeg, .png, .webp, and .heic. |
| Closed results report | One file at a time, using the same extensions and 250 MB limit. A later upload replaces the existing report. |
Selecting Continue on Resolution details saves pending text, matters, and new uploads before moving to Preview and send; Save as draft also persists those pending changes. Each feeder-fund toggle persists immediately. Removing an already-saved document also takes effect immediately and has no form-level undo. Previous changes the displayed step; it does not undo a saved feeder selection or document removal.
Recipient construction
The recipient preview is generated when the form loads and after a feeder selection changes:
- an investment account qualifies through at least one closed investment in the main fund or a selected feeder fund;
- only members of the account’s default signatory group appear as recipients;
- the system creates one vote per investment account and entitling-fund pair, not one vote per person;
- the same account can receive separate votes through the main fund and a selected feeder fund;
- a selected feeder fund contributes its underlying investors, while the feeder fund’s own investment account is excluded from the main-fund population to prevent a duplicate feeder vote; and
- a person assigned to more than one eligible vote receives a separate task and email for each assignment.
No records found. is not a valid reviewed audience. Correct closed-investment or default-signatory data before submitting.
The recipient preview is a point-in-time view, not a frozen send list. Submit re-derives the audience from the current closed investments, feeder selections, and default signatory groups. Reload Preview and send immediately before the final review, keep the underlying investment and signatory data unchanged through confirmation, and verify the expected accounts after the resolution reaches Sent.
Resolution lifecycle
| State | Meaning and available administrator action |
|---|---|
| Draft | Incomplete or unsent. An Admin can edit it, continue the two-step flow, or delete it. Deleting also removes its associated document workspace and cannot be undone. |
| Sent | Recipient votes, voter assignments, tasks, notifications, and queued emails have been created. The resolution is not editable. An Admin can view progress or irreversibly void it. |
| Voided | The sent resolution has been stopped. Pending or in-progress voter tasks are ended and void-notification emails are queued. Prior answers, signatures, and completed tasks remain as history. It cannot be restored, reopened, or closed as a valid result; create a replacement. |
| Closed | The deadline has expired and the daily close process has ended open voter tasks. An Admin can upload, replace, and send a results report or download the generated votes report. A closed resolution cannot be voided. |
Sending runs the resolution update, vote and voter creation, voter document-access update, dashboard task creation, user-notification creation, and email scheduling as one transaction. A validation failure leaves the resolution unsent. Sent means the email jobs were queued, not that every mailbox accepted the message.
Voiding a sent resolution is not erasure: prior answers, signatures, and completed tasks remain in the historical record. It ends pending or in-progress voter tasks and queues a void email for each assigned voter, but voiding does not recall messages or revoke document access already granted to voters. Closing ends pending or in-progress tasks but does not send a results report. Sending results is a separate confirmed action after an approved report exists.
Deadline behavior
The initial and reminder emails state a submission deadline of 23:59:59 UTC on the selected date. Voting remains open on the deadline date. On the following UTC date the resolution is expired, vote mutations are rejected, and the daily close process can move a still-Sent resolution to Closed.
A saved draft can outlive its original date. If its unchanged deadline has already passed, the final send action does not reliably rerun date freshness validation. Reopen Resolution details, choose a new future date, and review it again immediately before Submit; do not rely on Submit to reject an unchanged stale deadline.
The daily reminder process can queue reminders for unsigned assigned voters on the day before and the day of the deadline. A reminder also makes the associated open dashboard task visible again.
Vote states and result counts
| Vote state | Meaning |
|---|---|
| Outstanding | No assigned voter has recorded the account’s answers. |
| Pending signatures | One voter recorded the account’s answers and signed, but at least one other assigned voter still must sign. |
| Submitted | Every assigned voter has signed. Only Submitted votes contribute to Response summary. |
For each voting matter, Response summary shows a raw count of Yes, No, and Abstain from submitted account-and-fund votes. It is not weighted by ownership percentage, commitment, investment amount, or number of signatories.
Voting investment accounts is the raw number of vote rows, where each row represents one investment-account and entitling-fund pair. It is not a unique-account, legal-entity, or signatory count; the same account can contribute separate main-fund and feeder-fund rows.
The detail line Votes submitted has broader semantics: it counts every vote with an answer recorded, including a vote still in Pending signatures. Do not use Votes submitted by itself as final quorum or fully signed evidence. Reconcile the individual Votes by account statuses and use only Submitted votes in Response summary for finalized raw counts.
Results and reports
Results controls apply only to Closed resolutions. Uploading a report does not notify voters. Send resolution results reloads the resolution and uses the current report at send time; the confirmation names the resolution but does not bind the approved filename. Reload the detail page, reopen the report, verify its filename and content, and keep it unchanged through confirmation.
Sending results adds every persisted voter assignment to the report’s access group regardless of vote status, queues an email for each voter, and records the send timestamp. Reconcile the stored audience before sending. A removed or otherwise stale assignment can still receive the report; if one is present, do not send and contact support through an approved private channel because a Closed resolution cannot be voided. Results can be sent repeatedly, so also confirm the existing timestamp, current report, and audience before a resend.
Download report produces a PDF with resolution details, raw response counts, account vote statuses, answers, signatories, signatures, and timestamps. Treat the file as sensitive governance material.
Current revocation limitation
Do not rely on removing an assigned voter’s account membership as the sole way to revoke participation in an already-sent resolution. Current lifecycle handling does not safely treat that removal as a complete revocation across every voter operation and notification. Have an organization Admin select Void resolution, confirm Voided, correct the default signatory group, and create a replacement. Contact support if the resolution cannot be voided.