ReferenceResolutions

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

PurposeCurrent route
Fund listhttps://venture.infra.one/app/orgs/:org_slug/funds/:id/cap-table/shareholder-resolutions
SPV listhttps://venture.infra.one/app/orgs/:org_slug/spvs/:id/cap-table/shareholder-resolutions
Createhttps://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/new
Edit a drafthttps://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/:resolution_id/edit
View detailshttps://resolutions.infra.one/:org_slug/investment-vehicles/:fund_id/resolutions/:resolution_id
Download a closed votes reporthttps://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 capabilitySupported administrator-surface behavior
Signed-in organization member with view_resolutionsBrowse 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_resolutionsEverything 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.
GuestNeither view_resolutions nor manage_resolutions; no supported Resolutions access.
Account outside the organizationNo 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

InputCurrent rule
Resolution titleRequired to save a draft. Leading and trailing whitespace is removed.
Voting deadlineRequired to continue or submit and must be a future UTC date when validated.
PreambleRequired to continue or submit; Markdown is supported; maximum 10,000 characters.
Voting mattersAt 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 documentsUp 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 reportOne 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

StateMeaning and available administrator action
DraftIncomplete 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.
SentRecipient 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.
VoidedThe 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.
ClosedThe 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 stateMeaning
OutstandingNo assigned voter has recorded the account’s answers.
Pending signaturesOne voter recorded the account’s answers and signed, but at least one other assigned voter still must sign.
SubmittedEvery 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.