Web audit view and public projects
The Worker serves a static audit view at its root. It shows one project: an overview with counters, the intents, each decision with its tags, matched rule and approvals, and the audit timeline.
https://wayglass.example.com/?project=acme-webhttps://wayglass.example.com/?project=acme-web#/intentshttps://wayglass.example.com/?project=acme-web#/intents/i269d1c348ehttps://wayglass.example.com/?project=acme-web#/decisions/d4b1e2c3a09https://wayglass.example.com/?project=acme-web#/auditThe page has no build step and no login. It reads the Worker’s public read-only routes:
GET /v1/public/projects/<name>GET /v1/public/projects/<name>/intentsGET /v1/public/projects/<name>/decisionsGET /v1/public/projects/<name>/decisions/<decision-id>GET /v1/public/projects/<name>/auditProjects are private by default
Section titled “Projects are private by default”A project appears only when two separate gates are both open:
- The Worker variable
PUBLIC_PROJECTSmatches its name. It is a comma-separated list of exact names or prefixes ending in a single*, for exampledemo-*,eu-demo-*. A bare*, or a*anywhere but the end, matches nothing. Changing it means changingwrangler.jsoncand deploying. - The project itself opted in, either at creation with
wayglass init --publicor later by an admin withPATCH /v1/projects/<name> {"public": true}. The change is audited (project.made_public,project.made_private) and can be reversed at once with{"public": false}.
Any other name gets the same 404 whether the project exists or not, so the routes do not reveal which projects exist.
What is shown
Section titled “What is shown”Responses are built from a list of allowed fields, so a field added to the Worker later stays private until someone adds it here. Trunk and fork remotes, token ids, land ids, subscription ids and the client’s own preview of a decision are never returned. Token-shaped strings and Artifacts remote URLs inside free text, such as an intent’s reason, are masked.
What is shown: intent goals, reasons, agents, declared and changed paths, commits and statuses; decisions with tags, matched rule, action, reason, status and approvals (approver, verdict, reason); and the audit events.
Successful answers are cached for 15 seconds, so a project made private stops answering within that time.