forked from Qortal/q-blog
40 lines
4.4 KiB
JSON
40 lines
4.4 KiB
JSON
{
|
|
"issues": [
|
|
{
|
|
"title": "Adopt Quality Charter (sign-off)",
|
|
"body": "## Goal\nRatify the Quality Charter and set acceptance gates for Q-Blog 1.0.\n\n## Tasks\n- Review reliability, a11y, perf, security, and testability targets\n- Adjust thresholds if needed\n- Record sign-off and owners (Quality, A11y, Security)\n\n## Acceptance\n- Charter updated (if needed) and marked signed\n- Owners assigned and documented\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: docs \u00b7 Area: docs \u00b7 Priority: P0 \u00b7 Size: S",
|
|
"labels": ["docs", "P0", "S", "docs-area"]
|
|
},
|
|
{
|
|
"title": "Finalize Foundation Docs (Architecture, Testing, Accessibility, Security)",
|
|
"body": "## Goal\nPublish concise, source-of-truth docs to guide development.\n\n## Includes\n- ARCHITECTURE (UI \u2194 state \u2194 data, Name/Blog/Post model)\n- TESTING (pyramid, coverage, fixtures/mocks, MSW policy)\n- ACCESSIBILITY (landmarks, focus, live regions, motion/contrast)\n- SECURITY & PRIVACY (sanitization, permission checks, CSP posture)\n- USER_JOURNEYS & GLOSSARY (personas, invariants)\n\n## Acceptance\n- Docs present in `docs/`, linked from README\n- Each doc has a short \"How to verify\" section\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: docs \u00b7 Area: docs \u00b7 Priority: P1 \u00b7 Size: M",
|
|
"labels": ["docs", "P1", "M", "docs-area"]
|
|
},
|
|
{
|
|
"title": "Stand up Test Harness (Vitest + RTL + MSW + jest-axe)",
|
|
"body": "## Goal\nEnable fast, realistic tests with accessibility checks.\n\n## Tasks\n- Configure Vitest (jsdom), alias @\u2192src, coverage thresholds\n- Global test setup with RTL, user-event, jest-dom, jest-axe\n- MSW server for success/error/invalid payloads\n- Seed tests: app smoke, editor minimal, a11y smoke\n\n## Acceptance\n- `pnpm test` runs green; coverage report produced\n- At least 3 smoke tests and 1 a11y test in place\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: test \u00b7 Area: tests \u00b7 Priority: P0 \u00b7 Size: M",
|
|
"labels": ["test", "P0", "M", "tests"]
|
|
},
|
|
{
|
|
"title": "ESLint Flat Config + jsx-a11y Baseline",
|
|
"body": "## Goal\nCatch accessibility and code-quality issues early.\n\n## Tasks\n- Add flat ESLint config with TypeScript/React/jsx-a11y\n- Prettier integration; import/order; testing-library plugin\n- Fix initial lint errors (no blanket disables)\n\n## Acceptance\n- `pnpm lint` green on clean checkout\n- No `@ts-nocheck`; no new `any` in public props\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: chore \u00b7 Area: build \u00b7 Priority: P0 \u00b7 Size: S",
|
|
"labels": ["chore", "P0", "S", "build"]
|
|
},
|
|
{
|
|
"title": "Correctness Sweep I \u2014 MUI v4 imports & ts-nocheck removal",
|
|
"body": "## Goal\nRemove known correctness hazards blocking development.\n\n## Targets\n- Replace `@material-ui/*` imports with `@mui/*`\n- Remove `@ts-nocheck` in editor and app; add minimal types\n- Ensure app still builds/boots after changes\n\n## Acceptance\n- No remaining v4 imports; no ts-nocheck in core paths\n- Smoke tests green; manual run shows editor screen\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: fix \u00b7 Area: editor \u00b7 Priority: P0 \u00b7 Size: M",
|
|
"labels": ["fix", "P0", "M", "editor"]
|
|
},
|
|
{
|
|
"title": "Correctness Sweep II \u2014 Type hygiene in reducers/selectors",
|
|
"body": "## Goal\nReduce `any` usage and adopt consistent async state shapes.\n\n## Tasks\n- Replace common `any` with discriminated unions/interfaces\n- Standardize async lifecycles (idle/loading/success/error)\n- Normalize error object shape (code/message/recoverable)\n\n## Acceptance\n- Reducer/selector tests added\n- No new `any` in reducers/selectors; stricter types compile\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: fix \u00b7 Area: state \u00b7 Priority: P1 \u00b7 Size: M",
|
|
"labels": ["fix", "P1", "M", "state"]
|
|
},
|
|
{
|
|
"title": "Correctness Sweep III \u2014 Empty/Loading/Error states standardization",
|
|
"body": "## Goal\nUsers never experience a \u201cmystery fail.\u201d\n\n## Tasks\n- Implement consistent empty/loading/error components\n- Wire to data flows across list/detail/editor\n- Ensure retry paths for transient failures\n\n## Acceptance\n- Error surfaces include a recovery action\n- Smoke tests cover all three states on a list screen\n- See docs/QUALITY_CHARTER.md.\n\n## Labels\nType: fix \u00b7 Area: lists \u00b7 Priority: P1 \u00b7 Size: M",
|
|
"labels": ["fix", "P1", "M", "lists"]
|
|
}
|
|
]
|
|
}
|