create-yss-spec 1.1.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/package.json +13 -2
- package/src/cli.js +367 -51
- package/template/.agents/skills/ask-matt/SKILL.md +8 -4
- package/template/.agents/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.agents/skills/code-review/SKILL.md +4 -4
- package/template/.agents/skills/code-review/agents/openai.yaml +3 -0
- package/template/.agents/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.agents/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.agents/skills/excalidraw-diagram-generator/SKILL.md +4 -4
- package/template/.agents/skills/grill-me/SKILL.md +7 -0
- package/template/.agents/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.agents/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.agents/skills/grilling/SKILL.md +12 -0
- package/template/.agents/skills/grilling/agents/openai.yaml +3 -0
- package/template/.agents/skills/handoff/SKILL.md +16 -0
- package/template/.agents/skills/handoff/agents/openai.yaml +5 -0
- package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +6 -6
- package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
- package/template/.agents/skills/implement/SKILL.md +2 -2
- package/template/.agents/skills/implement/agents/openai.yaml +5 -0
- package/template/.agents/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.agents/skills/lombok/SKILL.md +345 -0
- package/template/.agents/skills/mapstruct/SKILL.md +328 -0
- package/template/.agents/skills/prototype/LOGIC.md +3 -3
- package/template/.agents/skills/prototype/SKILL.md +2 -6
- package/template/.agents/skills/prototype/UI.md +4 -4
- package/template/.agents/skills/prototype/agents/openai.yaml +3 -0
- package/template/.agents/skills/research/agents/openai.yaml +3 -0
- package/template/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.agents/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.agents/skills/tdd/agents/openai.yaml +3 -0
- package/template/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.agents/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.agents/skills/teach/SKILL.md +140 -0
- package/template/.agents/skills/teach/agents/openai.yaml +5 -0
- package/template/.agents/skills/to-spec/SKILL.md +58 -0
- package/template/.agents/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.agents/skills/to-tickets/SKILL.md +62 -0
- package/template/.agents/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.agents/skills/triage/SKILL.md +4 -4
- package/template/.agents/skills/triage/agents/openai.yaml +5 -0
- package/template/.agents/skills/wayfinder/SKILL.md +128 -0
- package/template/.agents/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.agents/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.agents/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.agents/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.agents/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.agents/skills/yss-cache/SKILL.md +44 -0
- package/template/.agents/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.agents/skills/yss-cache/references/annotations.md +39 -0
- package/template/.agents/skills/yss-cache/references/architecture.md +25 -0
- package/template/.agents/skills/yss-cache/references/configuration.md +34 -0
- package/template/.agents/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.agents/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.agents/skills/yss-cache/references/serialization.md +17 -0
- package/template/.agents/skills/yss-cache/references/source-index.md +64 -0
- package/template/.agents/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.agents/skills/yss-cache/references/verification.md +34 -0
- package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.agents/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.agents/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.claude/skills/ask-matt/SKILL.md +8 -4
- package/template/.claude/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.claude/skills/code-review/SKILL.md +4 -4
- package/template/.claude/skills/code-review/agents/openai.yaml +3 -0
- package/template/.claude/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.claude/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.claude/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.claude/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.claude/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.claude/skills/grill-me/SKILL.md +7 -0
- package/template/.claude/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.claude/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.claude/skills/grilling/SKILL.md +12 -0
- package/template/.claude/skills/grilling/agents/openai.yaml +3 -0
- package/template/.claude/skills/handoff/SKILL.md +16 -0
- package/template/.claude/skills/handoff/agents/openai.yaml +5 -0
- package/template/.claude/skills/implement/SKILL.md +2 -2
- package/template/.claude/skills/implement/agents/openai.yaml +5 -0
- package/template/.claude/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.claude/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.claude/skills/prototype/LOGIC.md +3 -3
- package/template/.claude/skills/prototype/SKILL.md +2 -6
- package/template/.claude/skills/prototype/UI.md +4 -4
- package/template/.claude/skills/prototype/agents/openai.yaml +3 -0
- package/template/.claude/skills/research/agents/openai.yaml +3 -0
- package/template/.claude/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.claude/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.claude/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.claude/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.claude/skills/tdd/agents/openai.yaml +3 -0
- package/template/.claude/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.claude/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.claude/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.claude/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.claude/skills/teach/SKILL.md +140 -0
- package/template/.claude/skills/teach/agents/openai.yaml +5 -0
- package/template/.claude/skills/to-spec/SKILL.md +58 -0
- package/template/.claude/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.claude/skills/to-tickets/SKILL.md +62 -0
- package/template/.claude/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.claude/skills/triage/SKILL.md +4 -4
- package/template/.claude/skills/triage/agents/openai.yaml +5 -0
- package/template/.claude/skills/wayfinder/SKILL.md +128 -0
- package/template/.claude/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.claude/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.claude/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.claude/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.claude/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.claude/skills/yss-cache/SKILL.md +44 -0
- package/template/.claude/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.claude/skills/yss-cache/references/annotations.md +39 -0
- package/template/.claude/skills/yss-cache/references/architecture.md +25 -0
- package/template/.claude/skills/yss-cache/references/configuration.md +34 -0
- package/template/.claude/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.claude/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.claude/skills/yss-cache/references/serialization.md +17 -0
- package/template/.claude/skills/yss-cache/references/source-index.md +64 -0
- package/template/.claude/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.claude/skills/yss-cache/references/verification.md +34 -0
- package/template/.claude/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.claude/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.claude/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.codex/config.toml +3 -0
- package/template/.codex/skills/ask-matt/SKILL.md +8 -4
- package/template/.codex/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.codex/skills/code-review/SKILL.md +4 -4
- package/template/.codex/skills/code-review/agents/openai.yaml +3 -0
- package/template/.codex/skills/code-review-process/references/automation-and-standards.md +1 -1
- package/template/.codex/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.codex/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.codex/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.codex/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.codex/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.codex/skills/handoff/SKILL.md +16 -0
- package/template/.codex/skills/handoff/agents/openai.yaml +5 -0
- package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +6 -6
- package/template/.codex/skills/implement/SKILL.md +2 -2
- package/template/.codex/skills/implement/agents/openai.yaml +5 -0
- package/template/.codex/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.codex/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.codex/skills/product-design-prototype/SKILL.md +14 -10
- package/template/.codex/skills/product-design-prototype/agents/openai.yaml +1 -1
- package/template/.codex/skills/prototype/LOGIC.md +3 -3
- package/template/.codex/skills/prototype/SKILL.md +2 -6
- package/template/.codex/skills/prototype/UI.md +4 -4
- package/template/.codex/skills/prototype/agents/openai.yaml +3 -0
- package/template/.codex/skills/prototype-review/SKILL.md +6 -6
- package/template/.codex/skills/prototype-review/agents/openai.yaml +2 -2
- package/template/.codex/skills/research/agents/openai.yaml +3 -0
- package/template/.codex/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.codex/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.codex/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.codex/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.codex/skills/tdd/agents/openai.yaml +3 -0
- package/template/.codex/skills/to-spec/SKILL.md +58 -0
- package/template/.codex/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.codex/skills/to-tickets/SKILL.md +62 -0
- package/template/.codex/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.codex/skills/triage/SKILL.md +4 -4
- package/template/.codex/skills/triage/agents/openai.yaml +5 -0
- package/template/.codex/skills/wayfinder/SKILL.md +128 -0
- package/template/.codex/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.codex/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.codex/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.codex/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.codex/skills/yss-api-integration/SKILL.md +1 -1
- package/template/.codex/skills/yss-cache/SKILL.md +29 -58
- package/template/.codex/skills/yss-cache/agents/openai.yaml +2 -2
- package/template/.codex/skills/yss-cache/references/annotations.md +39 -0
- package/template/.codex/skills/yss-cache/references/architecture.md +25 -0
- package/template/.codex/skills/yss-cache/references/configuration.md +34 -0
- package/template/.codex/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.codex/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.codex/skills/yss-cache/references/serialization.md +17 -0
- package/template/.codex/skills/yss-cache/references/source-index.md +1 -1
- package/template/.codex/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.codex/skills/yss-cache/references/verification.md +34 -0
- package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.codex/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.codex/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +2 -2
- package/template/.codex/skills/yss-design-system/SKILL.md +9 -2
- package/template/.codex/skills/yss-design-system/references/design-system.md +12 -0
- package/template/.codex/skills/yss-domain-modeling/SKILL.md +3 -3
- package/template/.codex/skills/yss-domain-modeling/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-domain-modeling/references/modeling-workflow.md +2 -2
- package/template/.codex/skills/yss-filerunner/SKILL.md +1 -1
- package/template/.codex/skills/yss-openapi/SKILL.md +35 -47
- package/template/.codex/skills/yss-openapi/img.png +0 -0
- package/template/.codex/skills/yss-openapi/img_1.png +0 -0
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +3 -3
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +4 -4
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +57 -34
- package/template/.codex/skills/yss-product-lifecycle/references/artifact-checklist.md +23 -21
- package/template/.codex/skills/yss-product-lifecycle/references/stage-routing.md +15 -15
- package/template/.codex/skills/yss-product-lifecycle/references/yss-skill-routing.md +13 -8
- package/template/.codex/skills/yss-repository/SKILL.md +11 -3
- package/template/.codex/skills/yss-router/SKILL.md +2 -3
- package/template/.codex/skills/yss-router/references/boundaries.md +0 -1
- package/template/.codex/skills/yss-source-index/references/source-map-config.md +0 -1
- package/template/.codex/skills/yss-source-index/scripts/refresh-yss-skill-index.py +0 -3
- package/template/.codex/skills/yss-web-controller/SKILL.md +9 -3
- package/template/.hermes/skills/ask-matt/SKILL.md +8 -4
- package/template/.hermes/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.hermes/skills/code-review/SKILL.md +4 -4
- package/template/.hermes/skills/code-review/agents/openai.yaml +3 -0
- package/template/.hermes/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.hermes/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.hermes/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.hermes/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.hermes/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.hermes/skills/grill-me/SKILL.md +7 -0
- package/template/.hermes/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.hermes/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.hermes/skills/grilling/SKILL.md +12 -0
- package/template/.hermes/skills/grilling/agents/openai.yaml +3 -0
- package/template/.hermes/skills/handoff/SKILL.md +16 -0
- package/template/.hermes/skills/handoff/agents/openai.yaml +5 -0
- package/template/.hermes/skills/implement/SKILL.md +2 -2
- package/template/.hermes/skills/implement/agents/openai.yaml +5 -0
- package/template/.hermes/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.hermes/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.hermes/skills/prototype/LOGIC.md +3 -3
- package/template/.hermes/skills/prototype/SKILL.md +2 -6
- package/template/.hermes/skills/prototype/UI.md +4 -4
- package/template/.hermes/skills/prototype/agents/openai.yaml +3 -0
- package/template/.hermes/skills/research/agents/openai.yaml +3 -0
- package/template/.hermes/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.hermes/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.hermes/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.hermes/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.hermes/skills/tdd/agents/openai.yaml +3 -0
- package/template/.hermes/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.hermes/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.hermes/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.hermes/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.hermes/skills/teach/SKILL.md +140 -0
- package/template/.hermes/skills/teach/agents/openai.yaml +5 -0
- package/template/.hermes/skills/to-spec/SKILL.md +58 -0
- package/template/.hermes/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.hermes/skills/to-tickets/SKILL.md +62 -0
- package/template/.hermes/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.hermes/skills/triage/SKILL.md +4 -4
- package/template/.hermes/skills/triage/agents/openai.yaml +5 -0
- package/template/.hermes/skills/wayfinder/SKILL.md +128 -0
- package/template/.hermes/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.hermes/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.hermes/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.hermes/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.hermes/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.hermes/skills/yss-cache/SKILL.md +44 -0
- package/template/.hermes/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.hermes/skills/yss-cache/references/annotations.md +39 -0
- package/template/.hermes/skills/yss-cache/references/architecture.md +25 -0
- package/template/.hermes/skills/yss-cache/references/configuration.md +34 -0
- package/template/.hermes/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.hermes/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.hermes/skills/yss-cache/references/serialization.md +17 -0
- package/template/.hermes/skills/yss-cache/references/source-index.md +64 -0
- package/template/.hermes/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.hermes/skills/yss-cache/references/verification.md +34 -0
- package/template/.hermes/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.hermes/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.hermes/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.obsidian/app.json +3 -0
- package/template/.obsidian/appearance.json +5 -0
- package/template/.obsidian/community-plugins.json +4 -0
- package/template/.obsidian/core-plugins.json +33 -0
- package/template/.obsidian/graph.json +22 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +1085 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +30 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +12 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +1 -0
- package/template/.obsidian/plugins/obsidian-git/main.js +415 -0
- package/template/.obsidian/plugins/obsidian-git/manifest.json +10 -0
- package/template/.obsidian/plugins/obsidian-git/styles.css +705 -0
- package/template/.obsidian/workspace.json +222 -0
- package/template/.pi/skills/ask-matt/SKILL.md +8 -4
- package/template/.pi/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.pi/skills/code-review/SKILL.md +4 -4
- package/template/.pi/skills/code-review/agents/openai.yaml +3 -0
- package/template/.pi/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.pi/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.pi/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.pi/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.pi/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.pi/skills/grill-me/SKILL.md +7 -0
- package/template/.pi/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.pi/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.pi/skills/grilling/SKILL.md +12 -0
- package/template/.pi/skills/grilling/agents/openai.yaml +3 -0
- package/template/.pi/skills/handoff/SKILL.md +16 -0
- package/template/.pi/skills/handoff/agents/openai.yaml +5 -0
- package/template/.pi/skills/implement/SKILL.md +2 -2
- package/template/.pi/skills/implement/agents/openai.yaml +5 -0
- package/template/.pi/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.pi/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.pi/skills/prototype/LOGIC.md +3 -3
- package/template/.pi/skills/prototype/SKILL.md +2 -6
- package/template/.pi/skills/prototype/UI.md +4 -4
- package/template/.pi/skills/prototype/agents/openai.yaml +3 -0
- package/template/.pi/skills/research/agents/openai.yaml +3 -0
- package/template/.pi/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.pi/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.pi/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.pi/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.pi/skills/tdd/agents/openai.yaml +3 -0
- package/template/.pi/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.pi/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.pi/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.pi/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.pi/skills/teach/SKILL.md +140 -0
- package/template/.pi/skills/teach/agents/openai.yaml +5 -0
- package/template/.pi/skills/to-spec/SKILL.md +58 -0
- package/template/.pi/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.pi/skills/to-tickets/SKILL.md +62 -0
- package/template/.pi/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.pi/skills/triage/SKILL.md +4 -4
- package/template/.pi/skills/triage/agents/openai.yaml +5 -0
- package/template/.pi/skills/wayfinder/SKILL.md +128 -0
- package/template/.pi/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.pi/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.pi/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.pi/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.pi/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.pi/skills/yss-cache/SKILL.md +44 -0
- package/template/.pi/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.pi/skills/yss-cache/references/annotations.md +39 -0
- package/template/.pi/skills/yss-cache/references/architecture.md +25 -0
- package/template/.pi/skills/yss-cache/references/configuration.md +34 -0
- package/template/.pi/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.pi/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.pi/skills/yss-cache/references/serialization.md +17 -0
- package/template/.pi/skills/yss-cache/references/source-index.md +64 -0
- package/template/.pi/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.pi/skills/yss-cache/references/verification.md +34 -0
- package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.pi/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.pi/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.trae/skills/ask-matt/SKILL.md +8 -4
- package/template/.trae/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.trae/skills/code-review/SKILL.md +4 -4
- package/template/.trae/skills/code-review/agents/openai.yaml +3 -0
- package/template/.trae/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.trae/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.trae/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.trae/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.trae/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.trae/skills/grill-me/SKILL.md +7 -0
- package/template/.trae/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.trae/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.trae/skills/grilling/SKILL.md +12 -0
- package/template/.trae/skills/grilling/agents/openai.yaml +3 -0
- package/template/.trae/skills/handoff/SKILL.md +16 -0
- package/template/.trae/skills/handoff/agents/openai.yaml +5 -0
- package/template/.trae/skills/implement/SKILL.md +2 -2
- package/template/.trae/skills/implement/agents/openai.yaml +5 -0
- package/template/.trae/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.trae/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.trae/skills/prototype/LOGIC.md +3 -3
- package/template/.trae/skills/prototype/SKILL.md +2 -6
- package/template/.trae/skills/prototype/UI.md +4 -4
- package/template/.trae/skills/prototype/agents/openai.yaml +3 -0
- package/template/.trae/skills/research/agents/openai.yaml +3 -0
- package/template/.trae/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.trae/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.trae/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.trae/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.trae/skills/tdd/agents/openai.yaml +3 -0
- package/template/.trae/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.trae/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.trae/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.trae/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.trae/skills/teach/SKILL.md +140 -0
- package/template/.trae/skills/teach/agents/openai.yaml +5 -0
- package/template/.trae/skills/to-spec/SKILL.md +58 -0
- package/template/.trae/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.trae/skills/to-tickets/SKILL.md +62 -0
- package/template/.trae/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.trae/skills/triage/SKILL.md +4 -4
- package/template/.trae/skills/triage/agents/openai.yaml +5 -0
- package/template/.trae/skills/wayfinder/SKILL.md +128 -0
- package/template/.trae/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.trae/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.trae/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.trae/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.trae/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.trae/skills/yss-cache/SKILL.md +44 -0
- package/template/.trae/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.trae/skills/yss-cache/references/annotations.md +39 -0
- package/template/.trae/skills/yss-cache/references/architecture.md +25 -0
- package/template/.trae/skills/yss-cache/references/configuration.md +34 -0
- package/template/.trae/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.trae/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.trae/skills/yss-cache/references/serialization.md +17 -0
- package/template/.trae/skills/yss-cache/references/source-index.md +64 -0
- package/template/.trae/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.trae/skills/yss-cache/references/verification.md +34 -0
- package/template/.trae/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.trae/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.trae/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/AGENTS.md +89 -250
- package/template/CONTEXT.md +24 -11
- package/template/README.md +31 -45
- package/template/docs/adr/{adr-product-design-prototype-entrypoint.md → 0001-product-design-prototype-entrypoint.md} +3 -3
- package/template/docs/adr/0002-yss-project-repository-mode.md +3 -0
- package/template/docs/agents/README.md +4 -5
- package/template/docs/agents/domain.md +13 -15
- package/template/docs/agents/gitlab-workflow-skills.md +5 -5
- package/template/docs/agents/issue-tracker.md +15 -14
- package/template/docs/agents/skills-maintenance.md +44 -109
- package/template/docs/agents/triage-labels.md +10 -12
- package/template/docs/api/templates/openapi-draft-review-checklist.md +4 -4
- package/template/docs/api/templates/openapi-freeze-record-template.md +5 -5
- package/template/docs/architecture/README.md +4 -4
- package/template/docs/architecture/templates/architecture-review-checklist.md +4 -4
- package/template/docs/architecture/templates/business-architecture-template.md +7 -7
- package/template/docs/architecture/templates/data-architecture-template.md +4 -4
- package/template/docs/architecture/templates/engineering-baseline-review-template.md +4 -3
- package/template/docs/architecture/templates/functional-architecture-template.md +7 -7
- package/template/docs/architecture/templates/system-overview-design-template.md +5 -6
- package/template/docs/architecture/templates/tech-design-template.md +2 -2
- package/template/docs/design/README.md +8 -8
- package/template/docs/design/design.md +10 -1
- package/template/docs/design/diagrams/README.md +1 -1
- package/template/docs/design/templates/interaction-spec-template.md +6 -6
- package/template/docs/design/templates/product-overview-design-template.md +8 -8
- package/template/docs/design/templates/prototype-confirmation-template.md +4 -4
- package/template/docs/design/templates/prototype-review-checklist.md +5 -5
- package/template/docs/design/templates/state-matrix-template.md +1 -1
- package/template/docs/discovery/IDEATION.md +2 -2
- package/template/docs/discovery/README.md +4 -4
- package/template/docs/discovery/templates/competitive-analysis-template.md +4 -4
- package/template/docs/discovery/templates/discovery-template.md +8 -8
- package/template/docs/implementation/create-yss-spec-repository-mode-contract.md +59 -0
- package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +49 -30
- package/template/docs/process/harness-automation-candidates.md +10 -13
- package/template/docs/process/harness-executive-blueprint.md +11 -11
- package/template/docs/process/harness-optimization-backlog.md +6 -6
- package/template/docs/process/harness-pilot-retro-metrics.md +8 -8
- package/template/docs/process/harness-pilot-selection.md +8 -8
- package/template/docs/process/harness-process-tailoring.md +35 -16
- package/template/docs/process/harness-work-unit-map.md +9 -9
- package/template/docs/process/implementation-repo-integration.md +25 -11
- package/template/docs/process/lifecycle-artifact-map.md +66 -40
- package/template/docs/process/product-prototype-workflow.md +10 -10
- package/template/docs/process/skill-governance.md +12 -4
- package/template/docs/process/subagent-collaboration-validation.md +53 -0
- package/template/docs/process/subagent-collaboration.md +111 -0
- package/template/docs/process/template-governance-grilling-record.md +38 -0
- package/template/docs/process/template-governance-skill-validation.md +44 -0
- package/template/docs/process/templates/stage-checkpoint-template.md +42 -7
- package/template/docs/releases/next-major-template-governance.md +32 -0
- package/template/docs/requirements/README.md +11 -11
- package/template/docs/{adr/template.md → templates/adr-template.md} +2 -2
- package/template/docs/templates/agent-brief-template.md +5 -5
- package/template/docs/templates/build-architecture-checklist-template.md +41 -11
- package/template/docs/templates/implementation-repo-registry-template.md +8 -3
- package/template/docs/templates/implementation-routing-template.md +85 -19
- package/template/docs/templates/requirement-freeze-template.md +8 -8
- package/template/docs/templates/review-report-template.md +50 -0
- package/template/docs/templates/spec-delta-template.md +5 -5
- package/template/docs/templates/{prd-template.md → spec-template.md} +19 -9
- package/template/docs/templates/subagent-task-package-template.md +93 -0
- package/template/docs/templates/verification-record-template.md +2 -2
- package/template/docs/templates/vertical-slice-ticket-template.md +88 -0
- package/template/docs/user-guide/README.md +2 -2
- package/template/docs/user-guide/create-yss-spec-cli-guide.md +27 -209
- package/template/docs/user-guide/excalidraw-diagram-generator-guide.md +8 -8
- package/template/docs/user-guide/grill-with-docs-best-practices.md +16 -16
- package/template/docs/user-guide/grill-with-docs-guide.md +19 -19
- package/template/docs/user-guide/lifecycle-best-practices.md +40 -40
- package/template/docs/user-guide/product-lifecycle-workflow.md +31 -31
- package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +121 -121
- package/template/docs/user-guide/spec-ticket-migration-guide.md +35 -0
- package/template/scripts/sync-skills +126 -0
- package/template/scripts/update-skill-lock +202 -0
- package/template/scripts/verify-lifecycle-scenarios +136 -0
- package/template/scripts/verify-template +148 -155
- package/template/skills-lock.json +1068 -65
- package/template/yss-project.yaml +2 -0
- package/template.manifest.json +3 -16
- package/template/.agent/skills/ask-matt/SKILL.md +0 -74
- package/template/.agent/skills/code-review/SKILL.md +0 -89
- package/template/.agent/skills/codebase-design/DEEPENING.md +0 -37
- package/template/.agent/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/template/.agent/skills/codebase-design/SKILL.md +0 -114
- package/template/.agent/skills/competitive-intelligence/SKILL.md +0 -94
- package/template/.agent/skills/diagnosing-bugs/SKILL.md +0 -134
- package/template/.agent/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
- package/template/.agent/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/template/.agent/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/template/.agent/skills/domain-modeling/SKILL.md +0 -74
- package/template/.agent/skills/grill-with-docs/SKILL.md +0 -7
- package/template/.agent/skills/implement/SKILL.md +0 -15
- package/template/.agent/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
- package/template/.agent/skills/improve-codebase-architecture/SKILL.md +0 -66
- package/template/.agent/skills/prototype/LOGIC.md +0 -79
- package/template/.agent/skills/prototype/SKILL.md +0 -30
- package/template/.agent/skills/prototype/UI.md +0 -112
- package/template/.agent/skills/research/SKILL.md +0 -12
- package/template/.agent/skills/resolving-merge-conflicts/SKILL.md +0 -14
- package/template/.agent/skills/setup-matt-pocock-skills/SKILL.md +0 -127
- package/template/.agent/skills/setup-matt-pocock-skills/domain.md +0 -51
- package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
- package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
- package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
- package/template/.agent/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
- package/template/.agent/skills/tdd/SKILL.md +0 -36
- package/template/.agent/skills/tdd/mocking.md +0 -59
- package/template/.agent/skills/tdd/tests.md +0 -77
- package/template/.agent/skills/to-issues/SKILL.md +0 -84
- package/template/.agent/skills/to-prd/SKILL.md +0 -75
- package/template/.agent/skills/triage/AGENT-BRIEF.md +0 -207
- package/template/.agent/skills/triage/OUT-OF-SCOPE.md +0 -105
- package/template/.agent/skills/triage/SKILL.md +0 -112
- package/template/.agents/skills/to-issues/SKILL.md +0 -84
- package/template/.agents/skills/to-prd/SKILL.md +0 -75
- package/template/.claude/skills/to-issues/SKILL.md +0 -84
- package/template/.claude/skills/to-prd/SKILL.md +0 -75
- package/template/.codex/skills/to-issues/SKILL.md +0 -84
- package/template/.codex/skills/to-prd/SKILL.md +0 -75
- package/template/.codex/skills/yss-anti-scheduler/SKILL.md +0 -53
- package/template/.codex/skills/yss-anti-scheduler/agents/openai.yaml +0 -4
- package/template/.codex/skills/yss-anti-scheduler/references/source-index.md +0 -157
- package/template/.codex/skills/yss-cache/assets/ClearCache.java +0 -34
- package/template/.codex/skills/yss-cache/assets/QueryCache.java +0 -36
- package/template/.codex/skills/yss-cache/assets/UpdateCache.java +0 -34
- package/template/.codex/skills/yss-cache/references/README.md +0 -5
- package/template/.hermes/skills/to-issues/SKILL.md +0 -84
- package/template/.hermes/skills/to-prd/SKILL.md +0 -75
- package/template/.pi/skills/to-issues/SKILL.md +0 -84
- package/template/.pi/skills/to-prd/SKILL.md +0 -75
- package/template/.trae/skills/to-issues/SKILL.md +0 -84
- package/template/.trae/skills/to-prd/SKILL.md +0 -75
- package/template/docs/templates/vertical-slice-issue-template.md +0 -61
- /package/template/docs/requirements/{issues → tickets}/.gitkeep +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Redis 故障降级与恢复
|
|
2
|
+
|
|
3
|
+
## 状态流
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
Redis 健康 -> 命令或健康检查失败 -> 标记不健康 -> 跳过 Redis
|
|
7
|
+
-> 可选 fallback -> 周期健康检查 -> Redis 可连接
|
|
8
|
+
-> 清理脏 Redis cache 与本地 fallback cache -> 恢复 Redis
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
- fallback 默认关闭,默认目标是 Caffeine。
|
|
12
|
+
- Redis 健康检查当前每 20 秒执行一次。
|
|
13
|
+
- Redis 命令级连接故障也会立即报告不健康,不必等待下一轮检查。
|
|
14
|
+
- 只读 fallback 不标记 Redis cache 为脏。
|
|
15
|
+
- put、putIfAbsent、evict、clear、invalidate 和 valueLoader 产生的回退写入会标记为脏。
|
|
16
|
+
- 恢复时先清理降级期间发生写操作的 Redis cache,再清理本地 fallback cache。
|
|
17
|
+
- Redis 失效失败时继续保持不健康状态并在后续检查重试,不能提前切回旧 Redis 数据。
|
|
18
|
+
|
|
19
|
+
## 一致性判断
|
|
20
|
+
|
|
21
|
+
- Caffeine fallback 是每节点独立数据,不能保证跨节点读到相同值。
|
|
22
|
+
- `clear-fallback-on-recovery=false` 会跳过恢复清理,可能重新暴露 Redis 旧值;除非业务明确接受,不要关闭。
|
|
23
|
+
- 强一致、锁、幂等状态或余额类数据不应依赖缓存 fallback 保证正确性。
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Redis 拓扑
|
|
2
|
+
|
|
3
|
+
框架使用 Spring Boot `spring.redis` 属性和 Jedis 客户端。
|
|
4
|
+
|
|
5
|
+
## Standalone
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
spring:
|
|
9
|
+
redis:
|
|
10
|
+
host: localhost
|
|
11
|
+
port: 6379
|
|
12
|
+
database: 10
|
|
13
|
+
username: ${REDIS_USERNAME:}
|
|
14
|
+
password: ${REDIS_PASSWORD:}
|
|
15
|
+
connect-timeout: 5s
|
|
16
|
+
timeout: 10s
|
|
17
|
+
client-type: jedis
|
|
18
|
+
jedis:
|
|
19
|
+
pool:
|
|
20
|
+
enabled: true
|
|
21
|
+
max-active: 16
|
|
22
|
+
max-idle: 8
|
|
23
|
+
min-idle: 2
|
|
24
|
+
max-wait: 2s
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Sentinel
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
spring:
|
|
31
|
+
redis:
|
|
32
|
+
database: 10
|
|
33
|
+
username: ${REDIS_USERNAME:}
|
|
34
|
+
password: ${REDIS_PASSWORD:}
|
|
35
|
+
sentinel:
|
|
36
|
+
master: mymaster
|
|
37
|
+
nodes: host1:26379,host2:26379,host3:26379
|
|
38
|
+
username: ${SENTINEL_USERNAME:}
|
|
39
|
+
password: ${SENTINEL_PASSWORD:}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
业务 Redis 认证与 Sentinel 自身认证相互独立。
|
|
43
|
+
|
|
44
|
+
## Cluster
|
|
45
|
+
|
|
46
|
+
```yaml
|
|
47
|
+
spring:
|
|
48
|
+
redis:
|
|
49
|
+
database: 0
|
|
50
|
+
username: ${REDIS_USERNAME:}
|
|
51
|
+
password: ${REDIS_PASSWORD:}
|
|
52
|
+
cluster:
|
|
53
|
+
nodes: host1:6379,host2:6379,host3:6379
|
|
54
|
+
max-redirects: 5
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## 强制约束
|
|
58
|
+
|
|
59
|
+
- Sentinel 和 Cluster 不能同时配置,违反时启动失败。
|
|
60
|
+
- Redis Cluster 只允许 DB 0,非零 `spring.redis.database` 会启动失败。
|
|
61
|
+
- username/password、SSL、client-name、连接/读取超时和 Jedis pool 参数会传入连接配置。
|
|
62
|
+
- 不要提供 Lettuce 专属调优参数;当前实现明确使用 Jedis。
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# 序列化兼容
|
|
2
|
+
|
|
3
|
+
当前存在两条不同数据路径:
|
|
4
|
+
|
|
5
|
+
- 框架 `RedisTemplate` 使用 Jackson JSON serializer。
|
|
6
|
+
- Spring `RedisCacheManager` 沿用默认 JDK value serialization。
|
|
7
|
+
|
|
8
|
+
两者的数据不可假设互相可读。`RedisTemplate` 的历史泛型声明与通用 JSON 行为也不完全一致,修改前必须检查消费方注入类型和实际操作。
|
|
9
|
+
|
|
10
|
+
以下变化都属于 Redis 数据协议变更:
|
|
11
|
+
|
|
12
|
+
- 修改 value/hash serializer。
|
|
13
|
+
- 修改 key serializer 或 cache prefix。
|
|
14
|
+
- 重命名 cache name。
|
|
15
|
+
- 改变 key 的字段、顺序、归一化或版本。
|
|
16
|
+
|
|
17
|
+
实施协议迁移前至少选择一种策略:双读单写、双写、版本化前缀、灰度清理或停机迁移。必须验证旧值读取、新值写入、回滚和混合版本节点;禁止把“统一 serializer”当作无风险重构。
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# yss-cache Source Index
|
|
2
|
+
|
|
3
|
+
Generated: 2026-07-17T10:08:00+00:00
|
|
4
|
+
Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT` to reproduce or refresh.
|
|
5
|
+
|
|
6
|
+
This file is generated by `yss-source-index/scripts/refresh-yss-skill-index.py`. Do not hand-edit generated sections.
|
|
7
|
+
|
|
8
|
+
Paths below are source path hints captured at refresh time. If they do not exist in the current workspace, locate sources using `YSS_SOURCE_ROOT`, CodeGraph, package/class names, Maven artifact names, or repository search before assuming the source is unavailable.
|
|
9
|
+
|
|
10
|
+
## Component Path Hints
|
|
11
|
+
|
|
12
|
+
- `yss-microservice-components/yss-component-cache-parent` (existed when indexed)
|
|
13
|
+
|
|
14
|
+
## Documentation Files
|
|
15
|
+
|
|
16
|
+
- `yss-microservice-components/yss-component-cache-parent/readme.md`
|
|
17
|
+
|
|
18
|
+
## Maven Modules
|
|
19
|
+
|
|
20
|
+
- `yss-microservice-components/yss-component-cache-parent`
|
|
21
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-cache-starter`
|
|
22
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache`
|
|
23
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache`
|
|
24
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-jetcache`
|
|
25
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache`
|
|
26
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache`
|
|
27
|
+
|
|
28
|
+
## Key Java Entry Points
|
|
29
|
+
|
|
30
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache/src/main/java/com/yss/cloud/cache/caffeine/config/CacheCaffeineManagerConfig.java`
|
|
31
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache/src/main/java/com/yss/cloud/cache/caffeine/config/CacheCaffeineResolver.java`
|
|
32
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-caffeine-cache/src/main/java/com/yss/cloud/cache/caffeine/config/CaffeineCacheBackendProvider.java`
|
|
33
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache/src/main/java/com/yss/cloud/cache/hazelcast/config/CacheHazelcastManagerConfig.java`
|
|
34
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache/src/main/java/com/yss/cloud/cache/hazelcast/config/HazelcastCacheBackendProvider.java`
|
|
35
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-hazelcast-cache/src/main/java/com/yss/cloud/cache/hazelcast/config/YssCacheHazelcastProperties.java`
|
|
36
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-jetcache/src/main/java/com/yss/cloud/cache/jetcache/CacheManagerCompose.java`
|
|
37
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisCacheBackendProvider.java`
|
|
38
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisConnFactoryConfig.java`
|
|
39
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisTemplateConfig.java`
|
|
40
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/SafeRedisCache.java`
|
|
41
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/YssCacheRedisResolver.java`
|
|
42
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/repository/BaseRedisRepository.java`
|
|
43
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/repository/YssDatamiddle.java`
|
|
44
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/ApplicationContextCacheHelper.java`
|
|
45
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheComposeResolver.java`
|
|
46
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheManagerCompose.java`
|
|
47
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheMemResolver.java`
|
|
48
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/CacheRedisResolver.java`
|
|
49
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/EnableYssCloudCache.java`
|
|
50
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/EnableYssCloudRedisCache.java`
|
|
51
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheBackendProvider.java`
|
|
52
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheInterceptor.java`
|
|
53
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheProperties.java`
|
|
54
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/ClearCache.java`
|
|
55
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/QueryCache.java`
|
|
56
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/UpdateCache.java`
|
|
57
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/YssCacheAnnotationParser.java`
|
|
58
|
+
- `yss-microservice-components/yss-component-cache-parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/config/CacheOperationSourceConfiguration.java`
|
|
59
|
+
|
|
60
|
+
## Recommended Next Reads
|
|
61
|
+
|
|
62
|
+
- Start with the documentation files above when learning component usage.
|
|
63
|
+
- Search the key Java entry points for annotations, auto configuration, properties, aspects, interceptors, handlers, and result objects before changing application code.
|
|
64
|
+
- Prefer existing component extension points over rewriting framework logic in business modules.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 证据化排障
|
|
2
|
+
|
|
3
|
+
## 缓存未命中
|
|
4
|
+
|
|
5
|
+
1. 检查 starter/后端依赖和 `@EnableYssCloudCache`。
|
|
6
|
+
2. 检查 `active-type` 与实际 Provider/CacheManager Bean。
|
|
7
|
+
3. 确认调用经过 Spring 代理,不是同类自调用。
|
|
8
|
+
4. 检查 SpEL 参数名、null、集合顺序和租户维度。
|
|
9
|
+
5. 比较两次调用生成的 cache name/key,并检查 Redis 实际 key。
|
|
10
|
+
6. 检查 `condition`、`unless`、TTL 和序列化异常。
|
|
11
|
+
|
|
12
|
+
## 更新后仍读旧值
|
|
13
|
+
|
|
14
|
+
1. 列出所有写、删、状态变更入口,确认每条路径都更新或清理相同 cache/key。
|
|
15
|
+
2. 检查事务是否尚未提交;YSS 写/删/清理可能在 `afterCommit` 执行。
|
|
16
|
+
3. 检查是否误用了 Caffeine、fallback 或 JetCache local cache。
|
|
17
|
+
4. 检查 `allEntries`、`beforeInvocation` 和空 key 产生的 `SimpleKey.EMPTY`。
|
|
18
|
+
|
|
19
|
+
## Redis 启动或连接失败
|
|
20
|
+
|
|
21
|
+
1. 判定 Standalone/Sentinel/Cluster,检查拓扑互斥和 Cluster DB 0。
|
|
22
|
+
2. 分别核对 Redis 数据节点与 Sentinel 认证。
|
|
23
|
+
3. 检查 SSL、DNS、端口、connect/read timeout 和 Jedis pool。
|
|
24
|
+
4. 检查用户自定义连接工厂是否使默认配置回退。
|
|
25
|
+
|
|
26
|
+
## Redis 故障后行为异常
|
|
27
|
+
|
|
28
|
+
1. 检查 fallback 是否明确开启、目标 Provider 是否存在且 available。
|
|
29
|
+
2. 区分只读回退与脏写回退。
|
|
30
|
+
3. 查看恢复时 Redis 清理失败日志;失败时框架应保持降级并重试。
|
|
31
|
+
4. 多节点差异优先按 fallback 一致性窗口分析,不要误判为 Redis 广播失效。
|
|
32
|
+
|
|
33
|
+
可先运行 `scripts/inspect-cache-usage.sh <project-root>` 取得静态证据,再进入源码路径。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 验证与完成标准
|
|
2
|
+
|
|
3
|
+
## 组件
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
./mvnw -f yss-microservice-components/yss-component-cache-parent/pom.xml verify
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
跨模块测试使用父 reactor 的 `-pl <module> -am`,避免解析本地旧 SNAPSHOT。也可运行:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
scripts/verify-cache-component.sh --source-root /path/to/yss-cloud-microservice
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 消费项目
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
./mvnw -pl <starter-module> -am -DskipTests package
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
完整启动依赖数据库、注册中心等外部服务时,构建验证与启动验证分开报告。
|
|
22
|
+
|
|
23
|
+
## 验收矩阵
|
|
24
|
+
|
|
25
|
+
- 首次调用执行业务,第二次相同 key 命中缓存。
|
|
26
|
+
- 不同租户/业务 key 不串值。
|
|
27
|
+
- 更新、删除、状态变更后旧值失效。
|
|
28
|
+
- `condition`、`unless` 和异常返回行为符合预期。
|
|
29
|
+
- 默认 TTL 和枚举覆盖 TTL 在后端物理存在。
|
|
30
|
+
- Redis 停止后行为符合 fallback 配置;恢复后旧 Redis 值不会重新出现。
|
|
31
|
+
- Sentinel/Cluster 创建正确连接工厂,Cluster 使用 DB 0。
|
|
32
|
+
- Docker 可用时真实 Redis 认证、JSON template、JDK cache serialization 和 TTL 测试实际执行。
|
|
33
|
+
- Java 8 组件 class major version 为 52。
|
|
34
|
+
- `git diff --check` 通过,消费 starter 构建通过。
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -u
|
|
3
|
+
|
|
4
|
+
skill_dir=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
|
|
5
|
+
|
|
6
|
+
locate_source() {
|
|
7
|
+
if [ "$#" -gt 0 ] && [ -n "$1" ]; then
|
|
8
|
+
if [ -d "$1/yss-microservice-components/yss-component-cache-parent" ]; then
|
|
9
|
+
echo "$1"
|
|
10
|
+
return 0
|
|
11
|
+
fi
|
|
12
|
+
return 1
|
|
13
|
+
fi
|
|
14
|
+
if [ -n "${YSS_SOURCE_ROOT:-}" ] && [ -d "$YSS_SOURCE_ROOT/yss-microservice-components/yss-component-cache-parent" ]; then
|
|
15
|
+
echo "$YSS_SOURCE_ROOT"
|
|
16
|
+
return 0
|
|
17
|
+
fi
|
|
18
|
+
for candidate in "$PWD" "$PWD/.." "$HOME/Projects/yss-cloud-microservice" "$HOME/Documents/yss-project/yss-cloud-microservice"; do
|
|
19
|
+
if [ -d "$candidate/yss-microservice-components/yss-component-cache-parent" ]; then
|
|
20
|
+
(CDPATH= cd -- "$candidate" && pwd)
|
|
21
|
+
return 0
|
|
22
|
+
fi
|
|
23
|
+
done
|
|
24
|
+
return 1
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
source_root=$(locate_source "${1:-}") || {
|
|
28
|
+
echo "ERROR: cannot locate yss-component-cache-parent; pass source root or set YSS_SOURCE_ROOT" >&2
|
|
29
|
+
exit 2
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
parent="$source_root/yss-microservice-components/yss-component-cache-parent"
|
|
33
|
+
annotation="$parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/annotation/ClearCache.java"
|
|
34
|
+
properties="$parent/yss-component-spring-cache/src/main/java/com/yss/cloud/cache/YssCacheProperties.java"
|
|
35
|
+
connection="$parent/yss-component-redis-cache/src/main/java/com/yss/cloud/cache/redis/config/RedisConnFactoryConfig.java"
|
|
36
|
+
index="$skill_dir/references/source-index.md"
|
|
37
|
+
fail=0
|
|
38
|
+
|
|
39
|
+
require_text() {
|
|
40
|
+
file=$1
|
|
41
|
+
pattern=$2
|
|
42
|
+
label=$3
|
|
43
|
+
if ! grep -Eq "$pattern" "$file"; then
|
|
44
|
+
echo "STALE: $label not found in $file"
|
|
45
|
+
fail=1
|
|
46
|
+
fi
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
require_text "$annotation" 'boolean allEntries\(\)' 'ClearCache.allEntries'
|
|
50
|
+
require_text "$annotation" 'boolean beforeInvocation\(\)' 'ClearCache.beforeInvocation'
|
|
51
|
+
require_text "$properties" 'private Duration defaultTtl' 'yss.cache.default-ttl'
|
|
52
|
+
require_text "$properties" 'private boolean fallbackEnabled' 'Redis fallback-enabled'
|
|
53
|
+
require_text "$properties" 'private String fallbackType' 'Redis fallback-type'
|
|
54
|
+
require_text "$properties" 'private boolean clearFallbackOnRecovery' 'Redis clear-fallback-on-recovery'
|
|
55
|
+
require_text "$connection" 'cannot be configured together' 'Sentinel/Cluster mutual exclusion'
|
|
56
|
+
require_text "$connection" 'database must be 0' 'Cluster database 0 guard'
|
|
57
|
+
|
|
58
|
+
for module in yss-component-spring-cache yss-component-redis-cache yss-component-caffeine-cache yss-component-cache-starter yss-component-jetcache; do
|
|
59
|
+
if ! grep -q "$module" "$index"; then
|
|
60
|
+
echo "STALE: source-index is missing module $module"
|
|
61
|
+
fail=1
|
|
62
|
+
fi
|
|
63
|
+
done
|
|
64
|
+
|
|
65
|
+
generated=$(sed -n 's/^Generated: //p' "$index" | head -1)
|
|
66
|
+
if [ -z "$generated" ]; then
|
|
67
|
+
echo "STALE: source-index has no Generated timestamp"
|
|
68
|
+
fail=1
|
|
69
|
+
else
|
|
70
|
+
echo "INFO: source-index generated at $generated"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
if [ "$annotation" -nt "$index" ] || [ "$properties" -nt "$index" ] || [ "$connection" -nt "$index" ]; then
|
|
74
|
+
echo "STALE: critical cache source is newer than source-index"
|
|
75
|
+
fail=1
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
if [ "$fail" -ne 0 ]; then
|
|
79
|
+
echo "RESULT: skill/source contract drift detected; refresh with yss-source-index and review semantic references"
|
|
80
|
+
exit 1
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
echo "RESULT: yss-cache critical contracts match source at $source_root"
|
|
84
|
+
exit 0
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -u
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
echo "Usage: $0 <project-root>" >&2
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if [ "$#" -ne 1 ]; then
|
|
9
|
+
usage
|
|
10
|
+
exit 2
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
root=$1
|
|
14
|
+
if [ ! -d "$root" ]; then
|
|
15
|
+
echo "ERROR: project root does not exist: $root" >&2
|
|
16
|
+
exit 2
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
if command -v rg >/dev/null 2>&1; then
|
|
20
|
+
search() { rg -n --hidden --glob '!target/**' --glob '!.git/**' --glob '*.java' --glob '*.yml' --glob '*.yaml' --glob '*.properties' --glob 'pom.xml' "$1" "$root" 2>/dev/null || true; }
|
|
21
|
+
files() { rg --files "$root" -g '*.yml' -g '*.yaml' -g '*.properties' -g '*.java' -g 'pom.xml'; }
|
|
22
|
+
else
|
|
23
|
+
search() { grep -REn "$1" "$root" --include='*.java' --include='*.yml' --include='*.yaml' --include='*.properties' --include='pom.xml' 2>/dev/null || true; }
|
|
24
|
+
files() { find "$root" -type f \( -name '*.java' -o -name '*.yml' -o -name '*.yaml' -o -name '*.properties' -o -name 'pom.xml' \); }
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
tmp=${TMPDIR:-/tmp}/yss-cache-inspect.$$
|
|
28
|
+
trap 'rm -f "$tmp"' EXIT HUP INT TERM
|
|
29
|
+
files >"$tmp"
|
|
30
|
+
if [ ! -s "$tmp" ]; then
|
|
31
|
+
echo "ERROR: no Java, Maven, or configuration files found under $root" >&2
|
|
32
|
+
exit 2
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
fail=0
|
|
36
|
+
echo "YSS cache usage inspection: $root"
|
|
37
|
+
|
|
38
|
+
report() {
|
|
39
|
+
level=$1
|
|
40
|
+
title=$2
|
|
41
|
+
pattern=$3
|
|
42
|
+
result=$(search "$pattern")
|
|
43
|
+
if [ -n "$result" ]; then
|
|
44
|
+
echo
|
|
45
|
+
echo "[$level] $title"
|
|
46
|
+
echo "$result" | sed -n '1,20p'
|
|
47
|
+
fi
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
report INFO "Cache component dependencies" 'yss-component-(cache-starter|spring-cache|redis-cache|caffeine-cache|hazelcast-cache|jetcache)'
|
|
51
|
+
report INFO "Cache enable annotations" '@EnableYssCloud(Cache|RedisCache)'
|
|
52
|
+
report INFO "YSS cache annotations" '@(QueryCache|UpdateCache|ClearCache)'
|
|
53
|
+
report INFO "Configured backend and TTL" 'yss\.cache\.(active-type|default-ttl)|active-type:|default-ttl:'
|
|
54
|
+
report INFO "Redis fallback configuration" 'fallback-(enabled|type)|clear-fallback-on-recovery'
|
|
55
|
+
report INFO "RedisTemplate injection contracts" 'RedisTemplate[[:space:]]*<'
|
|
56
|
+
|
|
57
|
+
sentinel=$(search 'spring\.redis\.sentinel|sentinel:')
|
|
58
|
+
cluster=$(search 'spring\.redis\.cluster|cluster:')
|
|
59
|
+
if [ -n "$sentinel" ] && [ -n "$cluster" ]; then
|
|
60
|
+
echo
|
|
61
|
+
echo "[ERROR] Both Redis Sentinel and Cluster configuration markers were found. Confirm they are not active in the same profile."
|
|
62
|
+
fail=1
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
if [ -n "$cluster" ]; then
|
|
66
|
+
nonzero=$(search 'spring\.redis\.database[[:space:]]*=[[:space:]]*[1-9][0-9]*|database:[[:space:]]*[1-9][0-9]*')
|
|
67
|
+
if [ -n "$nonzero" ]; then
|
|
68
|
+
echo
|
|
69
|
+
echo "[ERROR] Redis Cluster requires database 0."
|
|
70
|
+
echo "$nonzero" | sed -n '1,20p'
|
|
71
|
+
fail=1
|
|
72
|
+
fi
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
clear_without_key=$(search '@ClearCache[[:space:]]*(\([^)]*\))?')
|
|
76
|
+
if [ -n "$clear_without_key" ]; then
|
|
77
|
+
echo
|
|
78
|
+
echo "[REVIEW] ClearCache usages found. Verify each use has a stable key or explicit allEntries=true; no-arg methods produce SimpleKey.EMPTY."
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
query=$(search '@QueryCache')
|
|
82
|
+
update=$(search '@(UpdateCache|ClearCache)')
|
|
83
|
+
if [ -n "$query" ] && [ -z "$update" ]; then
|
|
84
|
+
echo
|
|
85
|
+
echo "[REVIEW] QueryCache is used but no UpdateCache/ClearCache annotation was found. Inspect explicit invalidation paths."
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
if [ "$fail" -ne 0 ]; then
|
|
89
|
+
echo
|
|
90
|
+
echo "RESULT: blocking cache configuration defects found"
|
|
91
|
+
exit 1
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
echo
|
|
95
|
+
echo "RESULT: no statically provable blocking cache defect found; REVIEW items still require code inspection"
|
|
96
|
+
exit 0
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -u
|
|
3
|
+
|
|
4
|
+
source_root=""
|
|
5
|
+
consumer_root=""
|
|
6
|
+
consumer_module=""
|
|
7
|
+
|
|
8
|
+
usage() {
|
|
9
|
+
echo "Usage: $0 [--source-root PATH] [--consumer-root PATH --consumer-module MODULE]" >&2
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
while [ "$#" -gt 0 ]; do
|
|
13
|
+
case "$1" in
|
|
14
|
+
--source-root) [ "$#" -ge 2 ] || { usage; exit 2; }; source_root=$2; shift 2 ;;
|
|
15
|
+
--consumer-root) [ "$#" -ge 2 ] || { usage; exit 2; }; consumer_root=$2; shift 2 ;;
|
|
16
|
+
--consumer-module) [ "$#" -ge 2 ] || { usage; exit 2; }; consumer_module=$2; shift 2 ;;
|
|
17
|
+
-h|--help) usage; exit 0 ;;
|
|
18
|
+
*) usage; exit 2 ;;
|
|
19
|
+
esac
|
|
20
|
+
done
|
|
21
|
+
|
|
22
|
+
if [ -z "$source_root" ]; then
|
|
23
|
+
source_root=${YSS_SOURCE_ROOT:-}
|
|
24
|
+
fi
|
|
25
|
+
if [ -z "$source_root" ]; then
|
|
26
|
+
for candidate in "$PWD" "$PWD/.." "$HOME/Projects/yss-cloud-microservice" "$HOME/Documents/yss-project/yss-cloud-microservice"; do
|
|
27
|
+
if [ -d "$candidate/yss-microservice-components/yss-component-cache-parent" ]; then
|
|
28
|
+
source_root=$candidate
|
|
29
|
+
break
|
|
30
|
+
fi
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
parent="${source_root%/}/yss-microservice-components/yss-component-cache-parent"
|
|
35
|
+
if [ -z "$source_root" ] || [ ! -f "$parent/pom.xml" ]; then
|
|
36
|
+
echo "ERROR: cannot locate cache parent; use --source-root or YSS_SOURCE_ROOT" >&2
|
|
37
|
+
exit 2
|
|
38
|
+
fi
|
|
39
|
+
if [ ! -x "$source_root/mvnw" ]; then
|
|
40
|
+
echo "ERROR: Maven wrapper is missing or not executable: $source_root/mvnw" >&2
|
|
41
|
+
exit 2
|
|
42
|
+
fi
|
|
43
|
+
if { [ -n "$consumer_root" ] && [ -z "$consumer_module" ]; } || { [ -z "$consumer_root" ] && [ -n "$consumer_module" ]; }; then
|
|
44
|
+
echo "ERROR: --consumer-root and --consumer-module must be provided together" >&2
|
|
45
|
+
exit 2
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
echo "== Cache reactor verify =="
|
|
49
|
+
(cd "$source_root" && ./mvnw -f "$parent/pom.xml" verify) || exit 1
|
|
50
|
+
|
|
51
|
+
echo "== Docker integration status =="
|
|
52
|
+
report="$parent/yss-component-redis-cache/target/surefire-reports/TEST-com.yss.cloud.cache.redis.config.RedisStandaloneIntegrationTest.xml"
|
|
53
|
+
if command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then
|
|
54
|
+
if [ ! -f "$report" ]; then
|
|
55
|
+
echo "ERROR: Docker is available but Redis integration report is missing" >&2
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
if grep -Eq 'skipped="[1-9]' "$report"; then
|
|
59
|
+
echo "ERROR: Docker is available but Redis integration test was skipped" >&2
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
62
|
+
echo "PASS: real Redis integration test executed"
|
|
63
|
+
else
|
|
64
|
+
echo "SKIP: Docker is unavailable; Redis integration test may be skipped by assumption"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
echo "== Diff whitespace =="
|
|
68
|
+
if command -v git >/dev/null 2>&1 && git -C "$source_root" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
|
|
69
|
+
git -C "$source_root" diff --check || exit 1
|
|
70
|
+
else
|
|
71
|
+
echo "SKIP: source root is not a Git worktree"
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
echo "== Java 8 bytecode =="
|
|
75
|
+
classes=$(find "$parent" -path '*/target/classes/*.class' -type f | head -1)
|
|
76
|
+
if [ -z "$classes" ]; then
|
|
77
|
+
echo "ERROR: no compiled cache class found" >&2
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
if ! command -v javap >/dev/null 2>&1; then
|
|
81
|
+
echo "ERROR: javap is required for bytecode verification" >&2
|
|
82
|
+
exit 2
|
|
83
|
+
fi
|
|
84
|
+
majors=$(find "$parent" -path '*/target/classes/*.class' -type f -exec javap -verbose {} \; 2>/dev/null | sed -n 's/.*major version: *//p' | sort -u)
|
|
85
|
+
if [ "$majors" != "52" ]; then
|
|
86
|
+
echo "ERROR: expected only Java 8 major version 52, found: $majors" >&2
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|
|
89
|
+
echo "PASS: all cache classes use major version 52"
|
|
90
|
+
|
|
91
|
+
if [ -n "$consumer_root" ]; then
|
|
92
|
+
echo "== Consumer build =="
|
|
93
|
+
if [ ! -x "$consumer_root/mvnw" ] || [ ! -f "$consumer_root/pom.xml" ]; then
|
|
94
|
+
echo "ERROR: invalid consumer root: $consumer_root" >&2
|
|
95
|
+
exit 2
|
|
96
|
+
fi
|
|
97
|
+
(cd "$consumer_root" && ./mvnw -pl "$consumer_module" -am -DskipTests package) || exit 1
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
echo "RESULT: cache verification passed"
|
|
101
|
+
exit 0
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"file-explorer": true,
|
|
3
|
+
"global-search": true,
|
|
4
|
+
"switcher": true,
|
|
5
|
+
"graph": true,
|
|
6
|
+
"backlink": true,
|
|
7
|
+
"canvas": true,
|
|
8
|
+
"outgoing-link": true,
|
|
9
|
+
"tag-pane": true,
|
|
10
|
+
"footnotes": true,
|
|
11
|
+
"properties": true,
|
|
12
|
+
"page-preview": true,
|
|
13
|
+
"daily-notes": true,
|
|
14
|
+
"templates": true,
|
|
15
|
+
"note-composer": true,
|
|
16
|
+
"command-palette": true,
|
|
17
|
+
"slash-command": false,
|
|
18
|
+
"editor-status": true,
|
|
19
|
+
"bookmarks": true,
|
|
20
|
+
"markdown-importer": true,
|
|
21
|
+
"zk-prefixer": false,
|
|
22
|
+
"random-note": false,
|
|
23
|
+
"outline": true,
|
|
24
|
+
"word-count": true,
|
|
25
|
+
"slides": false,
|
|
26
|
+
"audio-recorder": false,
|
|
27
|
+
"workspaces": false,
|
|
28
|
+
"file-recovery": true,
|
|
29
|
+
"publish": false,
|
|
30
|
+
"sync": true,
|
|
31
|
+
"bases": true,
|
|
32
|
+
"webviewer": false
|
|
33
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"collapse-filter": true,
|
|
3
|
+
"search": "",
|
|
4
|
+
"showTags": false,
|
|
5
|
+
"showAttachments": false,
|
|
6
|
+
"hideUnresolved": false,
|
|
7
|
+
"showOrphans": true,
|
|
8
|
+
"collapse-color-groups": true,
|
|
9
|
+
"colorGroups": [],
|
|
10
|
+
"collapse-display": true,
|
|
11
|
+
"showArrow": false,
|
|
12
|
+
"textFadeMultiplier": 0,
|
|
13
|
+
"nodeSizeMultiplier": 1,
|
|
14
|
+
"lineSizeMultiplier": 1,
|
|
15
|
+
"collapse-forces": true,
|
|
16
|
+
"centerStrength": 0.518713248970312,
|
|
17
|
+
"repelStrength": 10,
|
|
18
|
+
"linkStrength": 1,
|
|
19
|
+
"linkDistance": 250,
|
|
20
|
+
"scale": 2.2305684298600537,
|
|
21
|
+
"close": false
|
|
22
|
+
}
|