Add one-way Skill governance and personal reports #12

Merged
jesse merged 9 commits from feat/one-way-skill-personal-report into main 2026-08-06 14:11:14 +08:00
Owner

Summary

  • enforce one-way snapshot import from the local read-only yinduzhanxing source and preserve semantic-merge boundaries
  • merge the upstream reader-report contract without removing commercial themes
  • add strict ReportDocument v1 JSON Schema/Zod/Python validation and additive self-hosted/Supabase migrations
  • generate grounded personal reports through the real consultation workflow and Mastra structured output with owner isolation, idempotency, rate limits, stable failure codes, and canonical revalidation
  • add owner-only report reader, real D1 SVG, evidence appendix, browser print-to-PDF, and a gated homepage CTA
  • add staging feature selectors, acceptance matrix, resource checks, and additive rollback runbook

Security boundaries

  • no source Skill write-back; source commit remains unknown and is represented by a reproducible tree SHA-256
  • no arbitrary HTML/CSS/JS or server-side PDF browser runtime
  • no mock/sample/random chart fallback
  • report API uses authenticated reads and service-role generation writes; ready documents are revalidated before delivery
  • report body, birth facts, prompts, tokens, and raw exception stacks are excluded from logs
  • production deployment/migration is not authorized

Verification

  • python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45: pass
  • personal report frontend focused suite: 142/142
  • core Python matrix: 87/87
  • TypeScript: pass
  • Next production build: pass; NFT whole-project warnings 0
  • ESLint: 0 errors, 4 pre-existing unrelated warnings
  • full frontend suite on this macOS host: 1396/1409 after the new tests; remaining 13 are environment-command failures (Docker CLI absent, bare python absent, and their dependent assertions). The staging quality gate must rerun in its complete runner environment.

Rollback

  • application target: 49da8f916960030d5760d8dedf4e77820732a527, subject to retained successful gate artifacts
  • personal_reports migration is additive and intentionally remains after application rollback
  • see docs/operations/personal-report-staging.md
## Summary - enforce one-way snapshot import from the local read-only yinduzhanxing source and preserve semantic-merge boundaries - merge the upstream reader-report contract without removing commercial themes - add strict ReportDocument v1 JSON Schema/Zod/Python validation and additive self-hosted/Supabase migrations - generate grounded personal reports through the real consultation workflow and Mastra structured output with owner isolation, idempotency, rate limits, stable failure codes, and canonical revalidation - add owner-only report reader, real D1 SVG, evidence appendix, browser print-to-PDF, and a gated homepage CTA - add staging feature selectors, acceptance matrix, resource checks, and additive rollback runbook ## Security boundaries - no source Skill write-back; source commit remains unknown and is represented by a reproducible tree SHA-256 - no arbitrary HTML/CSS/JS or server-side PDF browser runtime - no mock/sample/random chart fallback - report API uses authenticated reads and service-role generation writes; ready documents are revalidated before delivery - report body, birth facts, prompts, tokens, and raw exception stacks are excluded from logs - production deployment/migration is not authorized ## Verification - `python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45`: pass - personal report frontend focused suite: 142/142 - core Python matrix: 87/87 - TypeScript: pass - Next production build: pass; NFT whole-project warnings 0 - ESLint: 0 errors, 4 pre-existing unrelated warnings - full frontend suite on this macOS host: 1396/1409 after the new tests; remaining 13 are environment-command failures (Docker CLI absent, bare `python` absent, and their dependent assertions). The staging quality gate must rerun in its complete runner environment. ## Rollback - application target: `49da8f916960030d5760d8dedf4e77820732a527`, subject to retained successful gate artifacts - personal_reports migration is additive and intentionally remains after application rollback - see `docs/operations/personal-report-staging.md`
jesse added 6 commits 2026-08-06 13:01:58 +08:00
jesse added 1 commit 2026-08-06 13:21:14 +08:00
test(report): register report reader in capability audit
Staging Backend Quality Gate / validate (pull_request) Failing after 12m13s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
58894b201b
jesse added 1 commit 2026-08-06 13:36:29 +08:00
test(report): register personal reports in database fixture
Staging Backend Quality Gate / validate (pull_request) Successful in 15m5s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
94f051f4d0
jesse added 1 commit 2026-08-06 13:53:19 +08:00
docs(bugs): record report gate regressions resolved
Staging Backend Quality Gate / validate (pull_request) Successful in 16m17s
Staging Backend Quality Gate / publish (pull_request) Has been skipped
8a475198e3
jesse merged commit e018dc90a7 into main 2026-08-06 14:11:14 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: root/Jyotisha#12