Who sees what
Fourteen roles, enforced on the server. The two that matter commercially.
A production is not a team of equals, and a tool that treats it as one is a tool a producer will not use. ScriptLock has fourteen roles, and every check happens on the server — a screen hiding a button is a convenience, never the gate.
| Role | The short version |
|---|---|
| Owner | Everything, except writing the audit log — nobody can do that |
| Executive | The script by link, and the budget topsheet only |
| Writer | The script. Never the budget — not the topsheet, not a total |
| Director | The script to comment on, shots in full, the schedule to read |
| Co-director | The same, with shots to edit rather than own |
| Assistant director | Breakdown and schedule in full, the script to read |
| Script supervisor | Annotations and the take log in full |
| Artist | Their own sides. Never the whole script, never a download |
| Production | Schedule, budget, people, locations in full |
| Travels | Schedule, people, locations — no script at all, by design, because this is the role most often given to somebody outside the company |
| Accounts | Budget and documents in full |
| Crew | Their department's scenes |
| Post | Post in full, the script and the take log to read |
| Guest | The script by link, nothing else |
The two that are not negotiable
An artist can never see more of the script than their own sides. Ask the engine to widen it and it refuses; ask the database and a constraint refuses; and the refusal itself is written to the audit log. Three layers for one promise, because that promise is what makes a producer willing to put a script on a platform at all.
Nobody can make the audit log writable, including the owner. The running service has no permission to delete a row from it.
Overrides
A production can raise or lower a role's level for one resource, with a reason, and it is an audited row rather than a setting. A document can override for itself. An override can never grant more than its author holds, and the three refusals above are refused whoever asks.
What a stranger gets
404, not 403. Somebody with a valid account who is not on your production is not told that it exists.
Wrong, or missing something? hello@scriptlock.app and say which page.