Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/flows/contract-intake.flow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@ import { must, ref } from './_values.js';
* `create_party` writes only the identity and contact fields the screen
* asks for: naming a locked field would refuse the whole write with 403
* "Field write denied". A new party is therefore born unflagged and
* unscreened, and legal maintains those fields afterwards (on a party
* legal does not own, writes are owner-scoped today, see #152). Should the
* unscreened, and legal maintains those fields afterwards (on any party,
* since `clm_party` is `public_read_write`, #152). Should the
* create still be refused, the run leaves nothing behind: `create_party`
* is the first write, after the last screen.
*
Expand Down
5 changes: 4 additions & 1 deletion src/objects/clause.object.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ export const Clause = ObjectSchema.create({
icon: 'book-open-text',
description: 'A playbook clause: standard wording, fallback wording, risk level and the contract categories it applies to.',

sharingModel: 'public_read',
// Every clause is open to update (#152, ruling D): legal maintains the
// seeded playbook it does not own; the permission sets keep everyone else
// read-only. Deletes stay owner-only.
sharingModel: 'public_read_write',
nameField: 'title',
highlightFields: ['title', 'risk_level', 'is_active'],

Expand Down
5 changes: 4 additions & 1 deletion src/objects/party.object.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ export const Party = ObjectSchema.create({
icon: 'building-2',
description: 'The other party to a contract — company, individual or public body — with registration, contact and banking details.',

sharingModel: 'public_read',
// Shared master data: every row is open to update (#152, ruling D), and the
// permission sets decide who writes what — legal every field, finance the
// banking pair, requesters and records nothing. Deletes stay owner-only.
sharingModel: 'public_read_write',
nameField: 'name',
highlightFields: ['name', 'party_kind', 'country_code', 'risk_flag'],

Expand Down
3 changes: 2 additions & 1 deletion src/profiles/requester.profile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ export const RequesterSet = definePermissionSet({
clm_signature: { allowCreate: false, allowRead: true, allowEdit: false, allowDelete: false },
clm_obligation: { allowCreate: false, allowRead: true, allowEdit: true, allowDelete: false },
clm_payment_plan: { allowCreate: false, allowRead: true, allowEdit: false, allowDelete: false },
// Configuration objects are public_read: everyone reads every row.
// Configuration objects are readable by everyone (`public_read`, or
// `public_read_write` for clm_party and clm_clause, #152): every row.
//
// A requester may CREATE a counterparty, because the intake flow (§06 F1
// "相对方查找或新建") offers every launcher the inline branch and runs its
Expand Down
Loading