|
71 | 71 | {"id":"ge-hch.1.8.3","title":"Docs: Risk","description":"Docs: Risk - write short runbook/docs.\\n\\n## Acceptance Criteria\\n- Docs explain how to run, test, and validate the feature.\\n\\n## Minimal Implementation\\n- Add section to docs or feature README.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-03T20:44:45.904222604-08:00","created_by":"rgardler","updated_at":"2026-01-07T02:14:28.008257195-08:00","closed_at":"2026-01-07T02:14:28.008257195-08:00","close_reason":"Completed","dependencies":[{"issue_id":"ge-hch.1.8.3","depends_on_id":"ge-hch.1.8","type":"parent-child","created_at":"2026-01-03T20:44:45.905057899-08:00","created_by":"rgardler"}]} |
72 | 72 | {"id":"ge-hch.2","title":"M0 — Scaffold / Smoke Demo","description":"M0 — Scaffold / Smoke Demo\n\nMinimal browser-based scaffold proving VN-style text UI and a working InkJS dev path. Success criteria: demo loads and executes an Ink story end-to-end in desktop/mobile viewport; branching choices selectable; single-slot save/load; developer run instructions; telemetry hook points documented.","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2026-01-07T17:23:57.819369354-08:00","created_by":"rgardler","updated_at":"2026-01-07T17:40:50.921496195-08:00","labels":["milestone"],"dependencies":[{"issue_id":"ge-hch.2","depends_on_id":"ge-hch","type":"parent-child","created_at":"2026-01-07T17:23:57.871837545-08:00","created_by":"rgardler"}],"deleted_at":"2026-01-07T17:40:50.921496195-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"} |
73 | 73 | {"id":"ge-hch.3","title":"M1 — MVP: Ink runtime + UI + save/load + telemetry + demo story","description":"M1 — MVP: Ink runtime + UI + save/load + telemetry + 1 demo story\\n\\nDeliver a playable text-only interactive novel using InkJS at runtime with branching choices, single-slot save/load, runtime telemetry, and at least one AI-generated demo story.\\n\\nSuccess criteria: runtime story end-to-end with no fatal errors; player choice selection; save/load demonstrable; telemetry events emitted; AI demo story included.","status":"in_progress","priority":1,"issue_type":"epic","created_at":"2026-01-07T17:24:00.942344426-08:00","created_by":"rgardler","updated_at":"2026-01-07T19:56:43.158764051-08:00","labels":["Status: Plan Created","milestone"],"dependencies":[{"issue_id":"ge-hch.3","depends_on_id":"ge-hch","type":"parent-child","created_at":"2026-01-07T17:24:00.94438965-08:00","created_by":"rgardler"},{"issue_id":"ge-hch.3","depends_on_id":"ge-hch.2","type":"blocks","created_at":"2026-01-07T17:24:30.264400437-08:00","created_by":"rgardler"}],"comments":[{"id":25,"issue_id":"ge-hch.3","author":"rgardler","text":"Plan: Agent story generation + Discord telemetry emitter\n\nCreated features/tasks:\n- ge-hch.5.1 Agent: Story Author (Ink)\n - ge-hch.5.1.1 Docs: Agent spec (Story Author)\n - ge-hch.5.1.2 Implement: Story Author harness\n - ge-hch.5.1.3 Tests: Generated story validation\n- ge-hch.3.1 Implement: Telemetry Discord emitter (webhook)\n- ge-hch.5.2 Secure: Telemetry webhook secret storage\n\nDecisions made:\n- Static demo will be deployed to GitHub Pages (no file:// runs).\n- LLM provider: OpenAI-compatible endpoint; agent must support configurable endpoint.\n- Telemetry will POST Discord rich embeds to provided webhook (initially unsecured). A follow-up bead (ge-hch.5.2) tracks securing it.\n\nFiles referenced/created by this plan:\n- history/plan_ge-hch.3_agent_story_gen.md (this file)\n- history/ai/agent-story-author.md (spec task will create)\n- web/stories/generated/ (target for generated stories)\n\nOpen Questions:\n- LLM credentials: will use online authentication (GitHub Copilot + OpenAI compatible endpoint). Confirm CI secret names: OPENAI_API_KEY, TELEMETRY_WEBHOOK.\n- Discord webhook message embeds: format designed by Build; confirm if additional fields required.\n","created_at":"2026-01-08T03:38:12Z"},{"id":28,"issue_id":"ge-hch.3","author":"rgardler","text":"Checked for an open PR for the ge-hch.3 work.\n\nFindings\n- PR exists: #102 — Plan: Agent Story Author + Discord telemetry (M1)\n - URL: https://github.com/TheWizardsCode/GEngine/pull/102\n- Current branch: ge-hch-ge-hch.3/agent-story-gen\n- Git status (uncommitted modifications present):\n - .beads/issues.jsonl\n - .opencode/agent/build.md\n - .opencode/command/design.md\n - .opencode/command/doc.md\n - .opencode/command/implement.md\n - .opencode/command/intake.md\n - .opencode/command/landThePlane.md\n - .opencode/command/milestones.md\n - .opencode/command/plan.md\n - .opencode/command/prd.md\n - .opencode/command/review.md\n - .opencode/command/testplan.md\n\nNotes / Recommendations\n- Because there are local uncommitted changes beyond .beads/issues.jsonl, I will not create or update any PR or make commits without your explicit instruction.\n- If you want me to create/update a PR that includes those edits, confirm I should commit \u0026 push the changes from this branch. I will follow Git Safety Protocol (no destructive commands, no force-push to main).\n- If the intent was only to update beads (issues.jsonl), commit that file only and we can push; otherwise, please confirm which files to include.\n\nNext steps I can take (pick one)\n- Commit and push the current working tree and create/update a PR for you (I will draft PR body referencing bd beads).\n- Stage and commit only .beads/issues.jsonl (carry bead state) and push.\n- Leave working tree unchanged and annotate the bd issue with this status (done).\n\nRecorded by: Build (pm agent)\n","created_at":"2026-01-08T03:57:52Z"}]} |
74 | | -{"id":"ge-hch.3.1","title":"Implement: Telemetry Discord emitter (webhook)","description":"Implement a Telemetry emitter that posts runtime telemetry events to a Discord webhook with rich embeds. Telemetry should default to console but support Telemetry.backendUrl = \u003cwebhook\u003e and window.Telemetry.enabled toggle.\\n\\n## Acceptance Criteria\\n- Implementation in web/demo/js/telemetry.discord.js or extension to telemetry.js.\\n- Posts story_start, choice_selected, smoke_triggered, story_complete as Discord embeds.\\n- Tests stub network and assert POST payload shape.\\n- Create follow-up bead under ge-hch.5 to secure webhook (store in CI secrets).\\n","status":"in_progress","priority":2,"issue_type":"task","assignee":"rgardler","created_at":"2026-01-07T19:38:03.67876324-08:00","created_by":"rgardler","updated_at":"2026-01-07T22:21:44.078086755-08:00","dependencies":[{"issue_id":"ge-hch.3.1","depends_on_id":"ge-hch.3","type":"parent-child","created_at":"2026-01-07T19:38:03.679644099-08:00","created_by":"rgardler"},{"issue_id":"ge-hch.3.1","depends_on_id":"ge-hch.5.3","type":"blocks","created_at":"2026-01-07T19:46:10.363993725-08:00","created_by":"rgardler"}],"comments":[{"id":29,"issue_id":"ge-hch.3.1","author":"rgardler","text":"Note: ge-hch.5.2 (secure telemetry webhook secret storage) should depend on this implementation rather than block it. Proceeding with emitter; follow-up security work remains.","created_at":"2026-01-08T06:28:35Z"}]} |
| 74 | +{"id":"ge-hch.3.1","title":"Implement: Telemetry Discord emitter (webhook)","description":"Implement a Telemetry emitter that posts runtime telemetry events to a Discord webhook with rich embeds. Telemetry should default to console but support Telemetry.backendUrl = \u003cwebhook\u003e and window.Telemetry.enabled toggle.\\n\\n## Acceptance Criteria\\n- Implementation in web/demo/js/telemetry.discord.js or extension to telemetry.js.\\n- Posts story_start, choice_selected, smoke_triggered, story_complete as Discord embeds.\\n- Tests stub network and assert POST payload shape.\\n- Create follow-up bead under ge-hch.5 to secure webhook (store in CI secrets).\\n","notes":"PR opened: https://github.com/TheWizardsCode/GEngine/pull/103","status":"in_progress","priority":2,"issue_type":"task","assignee":"rgardler","created_at":"2026-01-07T19:38:03.67876324-08:00","created_by":"rgardler","updated_at":"2026-01-07T22:42:45.664259566-08:00","labels":["Status: PR Created"],"dependencies":[{"issue_id":"ge-hch.3.1","depends_on_id":"ge-hch.3","type":"parent-child","created_at":"2026-01-07T19:38:03.679644099-08:00","created_by":"rgardler"},{"issue_id":"ge-hch.3.1","depends_on_id":"ge-hch.5.3","type":"blocks","created_at":"2026-01-07T19:46:10.363993725-08:00","created_by":"rgardler"}],"comments":[{"id":29,"issue_id":"ge-hch.3.1","author":"rgardler","text":"Note: ge-hch.5.2 (secure telemetry webhook secret storage) should depend on this implementation rather than block it. Proceeding with emitter; follow-up security work remains.","created_at":"2026-01-08T06:28:35Z"}]} |
75 | 75 | {"id":"ge-hch.3.1.1","title":"Docs: telemetry embed schema","description":"Design the Discord embed format for telemetry events and document payload schema, fields, and examples. Place in docs/telemetry/discord_embed.md.\\n\\n## Acceptance Criteria\\n- docs/telemetry/discord_embed.md exists with embed examples for each event.\\n","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-07T19:42:38.8587786-08:00","created_by":"rgardler","updated_at":"2026-01-07T19:42:38.8587786-08:00","dependencies":[{"issue_id":"ge-hch.3.1.1","depends_on_id":"ge-hch.3.1","type":"parent-child","created_at":"2026-01-07T19:42:38.861300925-08:00","created_by":"rgardler"}],"comments":[{"id":27,"issue_id":"ge-hch.3.1.1","author":"rgardler","text":"Telemetry embed schema (inlined into bead ge-hch.3.1.1)\n\nPurpose\n- Define rich Discord embed payloads for runtime telemetry events and provide testable payload examples.\n\nEmbed conventions\n- Use embed title, description, fields[], color, footer.\n- Footer should include session_id and timestamp (minimum). Include story version/branch in footer when available for provenance.\n\nEvent examples\n1) story_start\n- embed.title: \"Story Start — \u003cstory title\u003e\"\n- embed.fields: [{name: \"Session\", value: \u003csession_id\u003e}, {name: \"Author\", value: \u003cauthor\u003e}]\n- embed.footer: {text: \"session:\u003csession_id\u003e • ts:\u003cISO timestamp\u003e • ver:\u003cstory_version\u003e\"}\n\n2) choice_selected\n- embed.title: \"Choice Selected\"\n- embed.description: \u003cchoice_text\u003e\n- embed.fields: [{name: \"ChoiceIndex\", value: \"\u003cindex\u003e\"}, {name: \"Node\", value: \"\u003cnode_id\u003e\"}]\n- embed.footer: session + timestamp\n\n3) smoke_triggered\n- embed.title: \"Smoke Triggered\"\n- embed.fields: [{name: \"Tag\", value: \"smoke_trigger\"}, {name: \"Duration\", value: \"3s\"}, {name: \"Intensity\", value: \"medium\"}]\n- embed.footer: session + timestamp\n\n4) story_complete\n- embed.title: \"Story Complete — \u003cstory title\u003e\"\n- embed.fields: [{name: \"Duration\", value: \"\u003cms\u003e\"}, {name: \"ChoicesTaken\", value: \"\u003ccount\u003e\"}]\n- embed.footer: session + timestamp + ver\n\nPayload shape (POST to webhook)\n- { \"embeds\": [ \u003cembed-object\u003e ] }\n\nRate limiting\n- Batch events when possible; avoid spamming the webhook. Implement basic rate-limit backoff (exponential) on 429.\n\nLocal testing\n- Provide a stubbed local endpoint or use Playwright fetch interception to assert payload contents.\n\nSecurity\n- Do not commit webhook in code; use TELEMETRY_WEBHOOK secret. Rotate regularly and store in CI secrets.\n","created_at":"2026-01-08T03:53:32Z"}]} |
76 | 76 | {"id":"ge-hch.3.1.2","title":"Tests: Telemetry emitter (stub network)","description":"Create tests that stub network requests and assert Discord webhook POST payloads for telemetry events (story_start, choice_selected, smoke_triggered, story_complete).\\n\\n## Acceptance Criteria\\n- tests/telemetry.emitter.spec.ts exists and stubs fetch/XHR to validate payload shape and embed fields.\\n- CI runs these tests and they pass.\\n","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-07T19:45:37.856163747-08:00","created_by":"rgardler","updated_at":"2026-01-07T19:45:37.856163747-08:00","dependencies":[{"issue_id":"ge-hch.3.1.2","depends_on_id":"ge-hch.3.1","type":"parent-child","created_at":"2026-01-07T19:45:37.859478856-08:00","created_by":"rgardler"}]} |
77 | 77 | {"id":"ge-hch.3.2","title":"Feature: Stable story integration","description":"Ensure the stable demo story is the fallback and is packaged alongside generated stories.\\n\\n## Acceptance Criteria\\n- Stable story present at web/stories/demo.ink and referenced by README/manifest.\\n- Playwright and unit tests pass using stable story.\\n\\n## Minimal Implementation\\n- Confirm location and update docs/InkJS_README.md to document the stable story and how to swap in generated ones.\\n","status":"open","priority":2,"issue_type":"feature","created_at":"2026-01-07T19:42:28.644251263-08:00","created_by":"rgardler","updated_at":"2026-01-07T19:42:28.644251263-08:00","dependencies":[{"issue_id":"ge-hch.3.2","depends_on_id":"ge-hch.3","type":"parent-child","created_at":"2026-01-07T19:42:28.64606758-08:00","created_by":"rgardler"},{"issue_id":"ge-hch.3.2","depends_on_id":"ge-hch.3.4","type":"blocks","created_at":"2026-01-07T19:45:49.82618952-08:00","created_by":"rgardler"}]} |
|
0 commit comments