feat: harden production readiness and rebuild Dotify UX#92
Conversation
Backend key service:
- /health/ready readiness diagnostics: master-secret and Pinata config
(booleans only), RPC reachability + chain ID match, artist directory
readability, factory code presence; 503 when key delivery cannot work
- /version now reports the deploy commit SHA (GIT_COMMIT_SHA or git)
- request correlation IDs: x-request-id echoed or generated on every
response and included in error bodies
- typed error envelope { error, code, requestId } from global error and
404 handlers, registered before route plugins so encapsulated scopes
inherit them; framework statuses (429, 400) no longer collapse to 500
- pino redaction for authorization/cookie headers and session-token/
signature body fields
- app assembly extracted to src/app.ts so tests exercise real wiring
Signaling server:
- /health now echoes non-secret config: allowed origins, room TTL, host
heartbeat timeout, per-room listener cap
Tests: health routes (ready 200/503, no secrets), app wiring (request-id
echo/generation, typed 404, preserved statuses), signaling health echo.
README documents how to inspect health; ticket 10 carries delivery notes
with the remaining frontend surface.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
✅ Deploy Preview for muzinga ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
| - Load public room summaries when the listener shell mounts. | ||
| - Resolve the room targeted by `#/rooms/<roomId>`. | ||
| - Present its host, work, real presence count, room code, and wallet-free | ||
| promise in the existing join dialog. |
There was a problem hiding this comment.
Seem too verbose to me add the "wallet-free" promise in the join dialog
| - Present its host, work, real presence count, room code, and wallet-free | ||
| promise in the existing join dialog. | ||
| - Preserve the deliberate first-time pseudonym step and remembered-name | ||
| auto-join behavior. |
There was a problem hiding this comment.
We should strengthen this behavior to allow several different users to use the same device, and have their access/labeling. Maybe bind personhood to the triangle host
| attested factory/directory. | ||
| - The publish form keeps the artist wallet as the primary rights holder and lets | ||
| the artist add collaborators, producers, labels, or other EVM addresses with | ||
| basis-point shares. |
There was a problem hiding this comment.
investigate if we should change the basis-points for percentage. Does it make sense for the music industry ? For users, this should remain quite intuitive
| ### Security hardening | ||
|
|
||
| - Runtime-owner-only track registration plus outsider test. | ||
| - Server-side BLAKE2b-256 verification of uploaded audio plus mismatch test. |
There was a problem hiding this comment.
Need to elaborate why this additional verification is a must to have in the current context
|
@claude please carefully review this PR |
|
Claude finished @knzeng-e's task in 7m 1s —— View job Review: harden production readiness and rebuild Dotify UX
This is a large, mostly well-executed PR. The core security fix (owner-guard on High severity
Medium severityRegistry upgrade tooling: negative-path tests are missing for the most safety-critical guardrails. Low severity / notes
What looks solid
No other correctness, security, or CLAUDE.md-compliance issues found across the remaining docs/style/UI-only changes ( |
Summary
UX direction
Shared Score remains the IA and UX contract: Now, Rooms, contextual Player, You, and Studio keep the same low-friction product shape and truthful state rules.
The presentation is now the Living Light amendment: a deep navy canvas, glass chrome, electric cyan actions, restrained Polkadot pink, and
web/src/styles/aura.cssas the final stylesheet layer.applyAura()rewrites the--aura-*variables from the active track or artist context, so the field, hero, catalogue cards, player stage, dock, Stage rail, and Sky of Rooms respond to real product state rather than decorative fake motion.Production status
Artist publication is open on the configured fresh Paseo deployment:
0x9337287a194dfd8b53939eee1890b3f4ec0f8b0d0xda2761fea6f0871ed44ec719860fddb51b115be80x76ac102f448fbab9a7ea9efe4450878c01aabc8d109046070x7eacbb1e0ee963a8e732239990403c4836e56d64af8151b830eb341ba3c505af0xa509d4ccc5206974069bb858faba07e42b1f7b9b3fd217adc7bb40a8f714d788The read-only live audit verified the factory/directory pairing, the corrected registry facet hash, zero finalized runtimes, and zero pending runtimes. The previous deployment remains documented as legacy remediation evidence and must not be reused for new publication.
Validation
contracts/evm:npm run registry:audit:testnet-> passing on finalized block10904607web:npm run build-> passing after the Living Light updateweb:npm run lint-> 0 errors; 3 existing hook-dependency warningsweb:npm run fmt:check-> passinggit diff --check-> cleannpm run test:unit-> 134/134, targeted IPFS gateway fallback test passing, targeted publication-safety tests 28/28, signaling 42/42, API 64/64, Playwright E2E 11/11, contracts 44/44Notes