Skip to content

feat(hub): share approval packages and record reviewer decisions - #60

Merged
TheGreatAxios merged 1 commit into
cl-11933-add-a-presenter-that-builds-a-package-for-one-audiencefrom
cl-11934-share-a-package-and-record-reviewers-decisions
Nov 2, 2026
Merged

TheGreatAxios merged 1 commit into
cl-11933-add-a-presenter-that-builds-a-package-for-one-audiencefrom
cl-11934-share-a-package-and-record-reviewers-decisions

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Closes CL-11934 (Slice 4 of 5 for CL-11929; stacked on cl-11933-add-a-presenter-that-builds-a-package-for-one-audience).

Summary

  • Add GET /api/tenants/:tenantId/projects/:projectId/packages/:version/zip using @corbits/zip to deterministically bundle deck.pptx, deck.pdf, README.md, manifest.json, and grounded documents/<kind>.md.
  • Store review rounds in Postgres (approval_round table in apps/hub/src/db/schema.ts and migration 0036_approval_round.sql) with no idle parked workflow holding a sidecar slot.
  • Add person-only Hub routes and @corbits-builder/client methods to start an approval round (recording the project owner's approval of that approval_package version), record or amend reviewer decisions (approve, request_changes, comment with overall and per-slide notes), and settle a round.
  • Add the ContextualApprovalRounds reading-pane UI (apps/web/src/pages/workspace/approval-rounds.tsx) with zip download, native file share sheet, round creation, per-reviewer decision recording, and settlement.

@linear-code

linear-code Bot commented Nov 2, 2026

Copy link
Copy Markdown

CL-11934

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • CI green: required checks are failing

@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from 74984df to 7550f81 Compare November 2, 2026 02:41
@corbits-triage
corbits-triage Bot dismissed their stale review November 2, 2026 02:42

Nothing triage asked to change still fails, so this request no longer stands.

@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from 7550f81 to e1a6357 Compare November 2, 2026 03:40
@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Sharing a package and recording a reviewer decision match the PR. A decision is stored only on a reviewer id that belongs to the round for that tenant and project, and the round keeps the package version and sha256 it was started with. A reviewer id from another round is 404.

Two gaps:

  1. Blocking. StartApprovalRound accepts a name or email of " " (string > 0 is not trimmed). The service trims that to "", inserts the round, then serialization throws because name and email must be non-empty. The row is already committed, and every later GET /:projectId/approval-rounds fails for that project. The web dialog trims before send. POST /:projectId/approval-rounds and the client do not. Reproduction: start a round with reviewers: [{ name: " ", persona: "VP" }].

  2. recordDecision replaces the whole reviewers array from a stale read, with no row lock. Two decisions saved at the same time can drop one person's decision. The decision that remains is still on the right reviewer id.

@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from e1a6357 to 322cc7e Compare November 2, 2026 05:07

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • CI green: required checks are failing
    • lint
  • Conventions: added code matches a code pattern
    • apps/hub/src/artifacts/approval-rounds.ts:799 promise-chain: Promise chain; use async/await with try/catch.

@corbits-triage
corbits-triage Bot dismissed their stale review November 2, 2026 05:19

Nothing triage asked to change still fails, so this request no longer stands.

@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch 2 times, most recently from 76de76e to c4c6561 Compare November 2, 2026 05:54
@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from c4c6561 to f3cbc0c Compare November 2, 2026 06:04
@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from f3cbc0c to 6eb1635 Compare November 2, 2026 06:05

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • CI green: required checks are failing
    • typecheck

@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from 6eb1635 to 7f8bd7d Compare November 2, 2026 06:33
@corbits-triage
corbits-triage Bot dismissed their stale review November 2, 2026 06:38

Nothing triage asked to change still fails, so this request no longer stands.

corbits-triage[bot]
corbits-triage Bot previously approved these changes Nov 2, 2026
@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from 7f8bd7d to 9af73aa Compare November 2, 2026 08:57
@TheGreatAxios
TheGreatAxios added this pull request to stack #90 November 2, 2026 09:06
@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from 9af73aa to 2d3691b Compare November 2, 2026 09:18
@TheGreatAxios
TheGreatAxios enabled stacked auto-merge November 2, 2026 09:18

@corbits-triage corbits-triage Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Triage requests changes:

  • CI green: required checks are failing
    • typecheck

# Conflicts:
#	apps/hub/src/db/migrations/meta/0036_snapshot.json
#	apps/hub/src/db/migrations/meta/_journal.json
#	apps/hub/src/db/schema.ts
@TheGreatAxios
TheGreatAxios force-pushed the cl-11934-share-a-package-and-record-reviewers-decisions branch from 8fdca54 to 788a631 Compare November 2, 2026 09:25
@corbits-triage

corbits-triage Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Triage: Unsure

Asking a maintainer about:

  • changes sensitive paths: schema: apps/hub/src/db/migrations/0037_approval_round.sql, schema: apps/hub/src/db/migrations/meta/0037_snapshot.json, schema: apps/hub/src/db/migrations/meta/_journal.json

Stacked on #59: only this pull request's own changes were checked.

@corbits-triage
corbits-triage Bot dismissed their stale review November 2, 2026 09:41

Nothing triage asked to change still fails, so this request no longer stands.

@TheGreatAxios
TheGreatAxios disabled stacked auto-merge November 2, 2026 09:48
@TheGreatAxios
TheGreatAxios merged commit 9190c50 into main Nov 2, 2026
8 checks passed
An error occurred while trying to automatically change base from cl-11933-add-a-presenter-that-builds-a-package-for-one-audience to main November 2, 2026 09:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant