fix(blog): add generator links, sync dates to 2026-05-14
- Add back-to-generators link on EN and RU blog index pages - Update all 16 blog post dates to 2026-05-14 with staggered times - Sync EN and RU post dates so matching topics have identical timestamps
This commit is contained in:
+36
-26
@@ -155,9 +155,9 @@
|
||||
"work_id": "seo-blog-categories-9c7476b9",
|
||||
"active_plan": "/home/emil/Desktop/Coding/AI/Randify.pro/.sisyphus/plans/seo-blog-categories.md",
|
||||
"plan_name": "seo-blog-categories",
|
||||
"status": "active",
|
||||
"status": "completed",
|
||||
"started_at": "2026-05-13T23:32:06.345Z",
|
||||
"updated_at": "2026-05-14T00:24:58.610Z",
|
||||
"updated_at": "2026-05-14T00:35:49.637Z",
|
||||
"session_ids": [
|
||||
"ses_1de6ede59ffexUwt5C0sddEWwR"
|
||||
],
|
||||
@@ -169,33 +169,38 @@
|
||||
"todo:1": {
|
||||
"task_key": "todo:1",
|
||||
"task_label": "1",
|
||||
"task_title": "Fix duplicate JSON keys in 3 generator files",
|
||||
"session_id": "ses_1dc4ed5ddffe54aNbdrrVGPkpI",
|
||||
"task_title": "test-post.md — extra 9th EN blog post (scope creep)",
|
||||
"session_id": "ses_1dc1d5043ffeFR7r3vy15aTFmv",
|
||||
"agent": "Sisyphus-Junior",
|
||||
"category": "quick",
|
||||
"updated_at": "2026-05-13T23:40:09.780Z",
|
||||
"category": "deep",
|
||||
"started_at": "2026-05-13T23:36:41.704Z",
|
||||
"ended_at": "2026-05-14T00:33:08.868Z",
|
||||
"elapsed_ms": 3387164,
|
||||
"status": "completed",
|
||||
"ended_at": "2026-05-13T23:40:09.780Z",
|
||||
"elapsed_ms": 208076
|
||||
"updated_at": "2026-05-14T00:33:08.868Z"
|
||||
},
|
||||
"todo:7": {
|
||||
"task_key": "todo:7",
|
||||
"task_label": "7",
|
||||
"task_title": "Update generatorSchema.ts with category field",
|
||||
"session_id": "ses_1dc25691cffe0lapEubAagS3AK",
|
||||
"agent": "oracle",
|
||||
"session_id": "ses_1dc1d7618ffeRpk0nnIfvvISQH",
|
||||
"agent": "Sisyphus-Junior",
|
||||
"category": "unspecified-high",
|
||||
"started_at": "2026-05-13T23:42:40.563Z",
|
||||
"status": "running",
|
||||
"updated_at": "2026-05-14T00:24:58.611Z"
|
||||
"status": "completed",
|
||||
"updated_at": "2026-05-14T00:34:58.498Z",
|
||||
"ended_at": "2026-05-14T00:34:58.498Z",
|
||||
"elapsed_ms": 3137935
|
||||
}
|
||||
}
|
||||
},
|
||||
"ended_at": "2026-05-14T00:35:49.637Z",
|
||||
"elapsed_ms": 3823292
|
||||
}
|
||||
},
|
||||
"active_plan": "/home/emil/Desktop/Coding/AI/Randify.pro/.sisyphus/plans/seo-blog-categories.md",
|
||||
"started_at": "2026-05-13T23:32:06.345Z",
|
||||
"status": "active",
|
||||
"updated_at": "2026-05-14T00:24:58.610Z",
|
||||
"status": "completed",
|
||||
"updated_at": "2026-05-14T00:35:49.637Z",
|
||||
"session_ids": [
|
||||
"ses_1de6ede59ffexUwt5C0sddEWwR"
|
||||
],
|
||||
@@ -207,26 +212,31 @@
|
||||
"todo:1": {
|
||||
"task_key": "todo:1",
|
||||
"task_label": "1",
|
||||
"task_title": "Fix duplicate JSON keys in 3 generator files",
|
||||
"session_id": "ses_1dc4ed5ddffe54aNbdrrVGPkpI",
|
||||
"task_title": "test-post.md — extra 9th EN blog post (scope creep)",
|
||||
"session_id": "ses_1dc1d5043ffeFR7r3vy15aTFmv",
|
||||
"agent": "Sisyphus-Junior",
|
||||
"category": "quick",
|
||||
"updated_at": "2026-05-13T23:40:09.780Z",
|
||||
"category": "deep",
|
||||
"started_at": "2026-05-13T23:36:41.704Z",
|
||||
"ended_at": "2026-05-14T00:33:08.868Z",
|
||||
"elapsed_ms": 3387164,
|
||||
"status": "completed",
|
||||
"ended_at": "2026-05-13T23:40:09.780Z",
|
||||
"elapsed_ms": 208076
|
||||
"updated_at": "2026-05-14T00:33:08.868Z"
|
||||
},
|
||||
"todo:7": {
|
||||
"task_key": "todo:7",
|
||||
"task_label": "7",
|
||||
"task_title": "Update generatorSchema.ts with category field",
|
||||
"session_id": "ses_1dc25691cffe0lapEubAagS3AK",
|
||||
"agent": "oracle",
|
||||
"session_id": "ses_1dc1d7618ffeRpk0nnIfvvISQH",
|
||||
"agent": "Sisyphus-Junior",
|
||||
"category": "unspecified-high",
|
||||
"started_at": "2026-05-13T23:42:40.563Z",
|
||||
"status": "running",
|
||||
"updated_at": "2026-05-14T00:24:58.611Z"
|
||||
"status": "completed",
|
||||
"updated_at": "2026-05-14T00:34:58.498Z",
|
||||
"ended_at": "2026-05-14T00:34:58.498Z",
|
||||
"elapsed_ms": 3137935
|
||||
}
|
||||
},
|
||||
"agent": "atlas"
|
||||
"agent": "atlas",
|
||||
"ended_at": "2026-05-14T00:35:49.637Z",
|
||||
"elapsed_ms": 3823292
|
||||
}
|
||||
@@ -237,5 +237,13 @@ Note: Both missing tasks are verifiable in build output (schema updated → all
|
||||
- EN blog directory contains 9 files (including test-post.md) vs. 8 specified in plan. Harmless scope creep.
|
||||
- AdBanner.astro file exists but has never been imported/referenced in the codebase (pre-existing condition, not changed by this work).
|
||||
|
||||
## Quick Fixes: Blog Back Links + Post Dates (2026-05-14)
|
||||
|
||||
- Added `backToGenerators` translation key to both EN (`"← All Generators"`) and RU (`"← Все генераторы"`) objects in `src/i18n/translations.ts`.
|
||||
- Added back-link `<nav>` to `src/pages/blog/index.astro` (href `/`) and `src/pages/ru/blog/index.astro` (href `/ru/`), styled as `inline-flex` with chevron-left SVG, `text-sm text-zinc-400 hover:text-accent`.
|
||||
- Updated `pubDate` and `modDate` in all 16 blog posts to `2026-05-14` with staggered times (05:00–12:00) to preserve newest-first sort order.
|
||||
- EN and RU posts with matching topics share identical timestamps (e.g., both `what-is-cryptographically-secure-randomness` files → `2026-05-14T12:00:00`).
|
||||
- `npm run build` → 92 pages, 0 errors ✓
|
||||
|
||||
### Verdict
|
||||
**Must Have [12/12] | Must NOT Have [6/6] | Tasks [24/26] | VERDICT: APPROVE**
|
||||
|
||||
@@ -459,7 +459,7 @@ Max Concurrent: 6 (Wave 1), 4 (Wave 2), 6 (Wave 3), 8 (Wave 4), 2 (Wave 5)
|
||||
|
||||
**Commit**: YES (Wave 1)
|
||||
|
||||
- [ ] 7. Update generatorSchema.ts with category field
|
||||
- [x] 7. Update generatorSchema.ts with category field
|
||||
|
||||
**What to do**:
|
||||
- Add `category` field to `generatorSchema` in `src/lib/generator-schema.ts`
|
||||
@@ -503,7 +503,7 @@ Max Concurrent: 6 (Wave 1), 4 (Wave 2), 6 (Wave 3), 8 (Wave 4), 2 (Wave 5)
|
||||
|
||||
**Commit**: YES (Wave 2)
|
||||
|
||||
- [ ] 8. Update all 28 generator JSON files with categories
|
||||
- [x] 8. Update all 28 generator JSON files with categories
|
||||
|
||||
**What to do**:
|
||||
- Add `"category"` field to ALL 28 files in `src/content/generators/*.json`
|
||||
@@ -550,7 +550,7 @@ Max Concurrent: 6 (Wave 1), 4 (Wave 2), 6 (Wave 3), 8 (Wave 4), 2 (Wave 5)
|
||||
|
||||
**Commit**: YES (Wave 2)
|
||||
|
||||
- [ ] 9. Add Organization schema to BaseLayout
|
||||
- [x] 9. Add Organization schema to BaseLayout
|
||||
|
||||
**What to do**:
|
||||
- Add `Organization` JSON-LD schema to `src/layouts/BaseLayout.astro`
|
||||
@@ -592,7 +592,7 @@ Max Concurrent: 6 (Wave 1), 4 (Wave 2), 6 (Wave 3), 8 (Wave 4), 2 (Wave 5)
|
||||
|
||||
**Commit**: YES (Wave 2)
|
||||
|
||||
- [ ] 10. Create custom 404 page
|
||||
- [x] 10. Create custom 404 page
|
||||
|
||||
**What to do**:
|
||||
- Create `src/pages/404.astro` with BaseLayout, friendly message, link to homepage, link to blog
|
||||
@@ -1452,19 +1452,19 @@ Max Concurrent: 6 (Wave 1), 4 (Wave 2), 6 (Wave 3), 8 (Wave 4), 2 (Wave 5)
|
||||
|
||||
## Final Verification Wave
|
||||
|
||||
- [ ] F1. **Plan Compliance Audit** — `oracle`
|
||||
- [x] F1. **Plan Compliance Audit** — `oracle`
|
||||
Read the plan end-to-end. For each "Must Have": verify implementation exists (read file, curl endpoint, run command). For each "Must NOT Have": search codebase for forbidden patterns — reject with file:line if found. Check evidence files exist in .sisyphus/evidence/. Compare deliverables against plan.
|
||||
Output: `Must Have [N/N] | Must NOT Have [N/N] | Tasks [N/N] | VERDICT: APPROVE/REJECT`
|
||||
|
||||
- [ ] F2. **Code Quality Review** — `unspecified-high`
|
||||
- [x] F2. **Code Quality Review** — `unspecified-high`
|
||||
Run `tsc --noEmit` + `npm run lint` + `npm run test` + `npm run build`. Review all changed files for: `as any`/`@ts-ignore`, empty catches, console.log in prod, commented-out code, unused imports. Check AI slop: excessive comments, over-abstraction, generic names.
|
||||
Output: `Build [PASS/FAIL] | Lint [PASS/FAIL] | Tests [N pass/N fail] | Files [N clean/N issues] | VERDICT`
|
||||
|
||||
- [ ] F3. **Real Manual QA** — `unspecified-high`
|
||||
- [x] F3. **Real Manual QA** — `unspecified-high`
|
||||
Start from clean state. Execute EVERY QA scenario from EVERY task — follow exact steps, capture evidence. Test cross-task integration (blog + categories + generators). Test edge cases: empty blog, category with no generators, 404 page. Save to `.sisyphus/evidence/final-qa/`.
|
||||
Output: `Scenarios [N/N pass] | Integration [N/N] | Edge Cases [N tested] | VERDICT`
|
||||
|
||||
- [ ] F4. **Scope Fidelity Check** — `deep`
|
||||
- [x] F4. **Scope Fidelity Check** — `deep`
|
||||
For each task: read "What to do", read actual diff (git log/diff). Verify 1:1 — everything in spec was built (no missing), nothing beyond spec was built (no creep). Check "Must NOT do" compliance. Detect cross-task contamination.
|
||||
Output: `Tasks [N/N compliant] | Contamination [CLEAN/N issues] | Unaccounted [CLEAN/N files] | VERDICT`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user