Migration 0003: projects, aliases, renumbers, units, packets and every child table, change orders, assets, documents, ITPs, station limits, department weld flag. Policy package: Principal, PacketState, Action rules, custody, preconditions, CO hold, order of checks, can/blocked/holder on reads. docs/POLICY.md with the tightenings table for Seth. Write pipeline: FOR UPDATE, CAS on status and dept, If-Match row versions, server-assigned numbers, field CAS, version bump, packet log, audit, NOTIFY, signatures, IT reasons, filed lock and HMAC seal. API: /api/packets (header, transitions, work orders, pages, docs, move, remove, BOM, shorts, welds, heat tags, heat table, stage, checklist, clock, warehouse stage, Q.C., change orders, log, seal), /api/projects, /api/units, /api/assets, /_blob. Frontend: Clerical home, projects and units, packet page with pdf.js and QR codes, hand draft, heat map, send to warehouse, department or Q.C. Tests: policy matrix, API, concurrency, schema, projects; Playwright Clerical draft scenario. Verified on docker-1 with the CI stack and the Samba DC. Co-Authored-By: Claude Fable 5.1 <[email protected]>
35 lines
837 B
Python
35 lines
837 B
Python
"""Packet policy: who may do what to a packet, and when. Pure functions, no I/O. See docs/POLICY.md."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from .actions import ACTIVE, RULES, SHOP, STATUSES, TRANSITIONS, Action, Rule, Who
|
|
from .custody import holder_name, holds, works_on
|
|
from .engine import Decision, can, check, evaluate
|
|
from .preconditions import INPUT_ONLY, MESSAGES, PRECONDITIONS
|
|
from .principal import SYSTEM_FEED, PacketState, Principal, principal_from_roles
|
|
|
|
__all__ = [
|
|
"ACTIVE",
|
|
"INPUT_ONLY",
|
|
"MESSAGES",
|
|
"PRECONDITIONS",
|
|
"RULES",
|
|
"SHOP",
|
|
"STATUSES",
|
|
"SYSTEM_FEED",
|
|
"TRANSITIONS",
|
|
"Action",
|
|
"Decision",
|
|
"PacketState",
|
|
"Principal",
|
|
"Rule",
|
|
"Who",
|
|
"can",
|
|
"check",
|
|
"evaluate",
|
|
"holder_name",
|
|
"holds",
|
|
"principal_from_roles",
|
|
"works_on",
|
|
]
|