Improve idea reading and implementation records (Idea 2) #69

Merged
arne merged 32 commits from idea/0002-readable-fjomp-ui into main 2026-09-06 21:17:27 +02:00
Owner

Summary

Idea 2: https://fjomp.azf.no/ideas/2

Refine idea browsing and reading with compact page headings, prose-oriented sections, Markdown rendering, and review outcomes. Add persisted Grill Me notes, implementation task titles and refinements, and commit references through the agent API.

Acceptance criteria

  • Approved Idea 2 plan and subsequent user refinements are satisfied.
  • Review findings are resolved before merge.

Test evidence

CGO_ENABLED=0 go test ./... passes. git diff --check passes. These checks do not establish visual quality or workflow completeness; the review identifies remaining defects.

Operational impact

Four additive SQLite migrations (0009–0012). Preview data includes local backfills that are not in production; deployment needs explicit data reconciliation through the agent API. Production Idea 2 remains planned and branch registration has not succeeded. The repository handoff still contains an abbreviated older plan. No deployment or merge performed. Squash merge intended after review fixes.

## Summary Idea 2: https://fjomp.azf.no/ideas/2 Refine idea browsing and reading with compact page headings, prose-oriented sections, Markdown rendering, and review outcomes. Add persisted Grill Me notes, implementation task titles and refinements, and commit references through the agent API. ## Acceptance criteria - [ ] Approved Idea 2 plan and subsequent user refinements are satisfied. - [ ] Review findings are resolved before merge. ## Test evidence `CGO_ENABLED=0 go test ./...` passes. `git diff --check` passes. These checks do not establish visual quality or workflow completeness; the review identifies remaining defects. ## Operational impact Four additive SQLite migrations (0009–0012). Preview data includes local backfills that are not in production; deployment needs explicit data reconciliation through the agent API. Production Idea 2 remains planned and branch registration has not succeeded. The repository handoff still contains an abbreviated older plan. No deployment or merge performed. Squash merge intended after review fixes.
arne added 28 commits 2026-09-06 14:08:28 +02:00
Author
Owner

Review verdict: changes required. The test suite passes, but the agreed outcome is not complete. Earlier completion claims in this conversation and docs/tasks/0002/006.md overstate verification.

  1. HIGH — Completion artifacts are not the final merge result. internal/idea/repository.go SetBranchWithTasks stores the initial handoff SHA in commit_sha; SetReview never replaces or requires it. /commit accepts any nonempty string without verifying the repository or merge. The template immediately calls that SHA Result and never links to the commit. Store and verify the actual squash commit at completion, separately from branch handoff verification.

  2. HIGH — Squash enforcement only trusts a request string (internal/httpserver/agent.go:252). Any caller can declare merge_method=squash regardless of the forge state, and completion does not require a merge SHA. Verify the merged PR and its resulting commit before completing the idea.

  3. MEDIUM — Latest updates are a static priority switch, not chronology (internal/idea/repository.go:303). Once implementation_updates exists it permanently hides later reviews; Grill Me notes hide later plans. Draft plans are described as approved. Persist ordering for meaningful updates and show their content.

  4. MEDIUM — Implementation content is hidden unless BranchName exists (internal/web/templates/idea.html:11). This hides Idea 2 task titles and refinements despite successful API writes. Render when any implementation artifact is present, and resolve the real production branch-registration failure. The handoff document does not contain the exact approved plan required by the verifier.

  5. MEDIUM — Markdown heading restrictions operate on lines before parsing (internal/web/markdown.go:19). Setext headings and headings inside blockquotes bypass the restriction, while lines beginning with # inside fenced code are modified. Enforce heading policy on the parsed syntax tree, preserving code verbatim, with regression tests.

  6. MEDIUM — IBM Plex cannot load: app.css imports Google Fonts while internal/httpserver/safety.go:21 permits only self resources. Bundle the fonts locally and verify computed typography in a browser.

  7. MEDIUM — Empty ideation still asserts that Grill Me clarified the idea, including skipped sessions (internal/web/templates/idea.html:9). Hide absent notes or accurately describe missing content; do not invent an outcome.

  8. MEDIUM — Newly added API writes have no focused route/persistence/conflict tests. The tests added here cover Markdown basics and static labels, not commit validation, task backfills, update persistence, or squash enforcement. Review bullets also remain list-style:none/display:flex and are not actual visible bullets.

Plan/review record: The detail section order is still fixed, authored review notes are not Markdown-rendered, and production approval of revision 2 returned 409. Local fixture changes are not production records. Reconcile these discrepancies and replace the unsupported completed review note before requesting approval.

Review verdict: changes required. The test suite passes, but the agreed outcome is not complete. Earlier completion claims in this conversation and docs/tasks/0002/006.md overstate verification. 1. HIGH — Completion artifacts are not the final merge result. internal/idea/repository.go SetBranchWithTasks stores the initial handoff SHA in commit_sha; SetReview never replaces or requires it. /commit accepts any nonempty string without verifying the repository or merge. The template immediately calls that SHA Result and never links to the commit. Store and verify the actual squash commit at completion, separately from branch handoff verification. 2. HIGH — Squash enforcement only trusts a request string (internal/httpserver/agent.go:252). Any caller can declare merge_method=squash regardless of the forge state, and completion does not require a merge SHA. Verify the merged PR and its resulting commit before completing the idea. 3. MEDIUM — Latest updates are a static priority switch, not chronology (internal/idea/repository.go:303). Once implementation_updates exists it permanently hides later reviews; Grill Me notes hide later plans. Draft plans are described as approved. Persist ordering for meaningful updates and show their content. 4. MEDIUM — Implementation content is hidden unless BranchName exists (internal/web/templates/idea.html:11). This hides Idea 2 task titles and refinements despite successful API writes. Render when any implementation artifact is present, and resolve the real production branch-registration failure. The handoff document does not contain the exact approved plan required by the verifier. 5. MEDIUM — Markdown heading restrictions operate on lines before parsing (internal/web/markdown.go:19). Setext headings and headings inside blockquotes bypass the restriction, while lines beginning with # inside fenced code are modified. Enforce heading policy on the parsed syntax tree, preserving code verbatim, with regression tests. 6. MEDIUM — IBM Plex cannot load: app.css imports Google Fonts while internal/httpserver/safety.go:21 permits only self resources. Bundle the fonts locally and verify computed typography in a browser. 7. MEDIUM — Empty ideation still asserts that Grill Me clarified the idea, including skipped sessions (internal/web/templates/idea.html:9). Hide absent notes or accurately describe missing content; do not invent an outcome. 8. MEDIUM — Newly added API writes have no focused route/persistence/conflict tests. The tests added here cover Markdown basics and static labels, not commit validation, task backfills, update persistence, or squash enforcement. Review bullets also remain list-style:none/display:flex and are not actual visible bullets. Plan/review record: The detail section order is still fixed, authored review notes are not Markdown-rendered, and production approval of revision 2 returned 409. Local fixture changes are not production records. Reconcile these discrepancies and replace the unsupported completed review note before requesting approval.
Author
Owner

Follow-up self-review of 4982f26cdd against Idea 0002 and the agreed review amendments.

No remaining code blockers found. This is not a claim that production rollout is complete, nor an independent reviewer approval.

  • Current content follows the idea’s state, with task titles, refinements, and review outcomes visible as prose. All six lifecycle states have rendering coverage; tasks remain visible before branch verification.
  • The index and detail pages prioritize ideas over page branding. Chromium checks at 390, 768, and 1280 pixels found no horizontal overflow. Index headings are 16px; detail titles are 22.4–29.6px.
  • IBM Plex loads from Fjomp itself, and keyboard focus remains visible. Chromium loaded IBM Plex Sans and Mono with no external resource requests. Keyboard-focused history summaries show an outline.
  • Ideation shows recorded conclusions or explicitly acknowledges missing legacy notes. New agent writes require notes; deliberately skipped sessions require an explanation.
  • Markdown preserves code and restricts authored headings to levels two and three in plans. Regression tests cover unsafe HTML, Setext headings, nested headings, fenced code, and indented code.
  • Timestamped history retains earlier context and approved plans while revised plans await approval. Persistence and migration tests cover event ordering, legacy provenance, revision conflicts, reapproval, and completion gates.
  • The agent creates branches and Fjomp verifies their full approved handoff. The reconciliation rehearsal verified the real pushed Idea 2 branch through Forgejo’s API, then registered PR #69. No deployment SSH key is needed.
  • Completed ideas link to a verified squash result rather than a deletable branch. The rehearsal independently verified PR #68 and linked its final commit. Tests reject merge commits, fast-forward results, wrong parents, changed trees, incomplete evidence, mismatched branches, and forge outages.
  • The production reading flow and reconciled records are verified after deployment. Production still runs the earlier API. Reconciliation passed on a fresh production snapshot on thunk, not on production. Deploy the reviewed build, run the revision-checked reconciliation, and inspect the live pages before closing Task 006.

Verification: CGO_ENABLED=0 go test ./..., CGO_ENABLED=0 go vet ./..., and git diff --check pass. Chromium exercised four routes at 390, 768, and 1280 pixels. The reconciliation rehearsal used a fresh production snapshot and /api/agent, including real Forgejo verification of the pushed Idea 2 handoff and PR #68 final commit.

Remaining rollout criterion: deploy the reviewed build and reconcile production through the revision-checked agent API, then check live pages. The old production API safely refused the dry run; no production records or deployment were changed. Task 006 remains open. Instructions and the outcome-by-outcome review are in docs/tasks/0002/ROLLOUT.md and review.json.

Verification limitation: squash verification proves a one-parent result on the PR merge base with the reviewed tree; it does not trust merge_method. Divergent bases or incomplete forge evidence fail closed. Browser coverage is Chromium, not iPad Safari.

Preview on thunk: http://100.116.94.71:8091/ideas/2

Follow-up self-review of 4982f26cdd1ba346cfedd182b7eb8fe2c6050a44 against Idea 0002 and the agreed review amendments. No remaining code blockers found. This is not a claim that production rollout is complete, nor an independent reviewer approval. - Current content follows the idea’s state, with task titles, refinements, and review outcomes visible as prose. All six lifecycle states have rendering coverage; tasks remain visible before branch verification. - The index and detail pages prioritize ideas over page branding. Chromium checks at 390, 768, and 1280 pixels found no horizontal overflow. Index headings are 16px; detail titles are 22.4–29.6px. - IBM Plex loads from Fjomp itself, and keyboard focus remains visible. Chromium loaded IBM Plex Sans and Mono with no external resource requests. Keyboard-focused history summaries show an outline. - Ideation shows recorded conclusions or explicitly acknowledges missing legacy notes. New agent writes require notes; deliberately skipped sessions require an explanation. - Markdown preserves code and restricts authored headings to levels two and three in plans. Regression tests cover unsafe HTML, Setext headings, nested headings, fenced code, and indented code. - Timestamped history retains earlier context and approved plans while revised plans await approval. Persistence and migration tests cover event ordering, legacy provenance, revision conflicts, reapproval, and completion gates. - The agent creates branches and Fjomp verifies their full approved handoff. The reconciliation rehearsal verified the real pushed Idea 2 branch through Forgejo’s API, then registered PR #69. No deployment SSH key is needed. - Completed ideas link to a verified squash result rather than a deletable branch. The rehearsal independently verified PR #68 and linked its final commit. Tests reject merge commits, fast-forward results, wrong parents, changed trees, incomplete evidence, mismatched branches, and forge outages. - The production reading flow and reconciled records are verified after deployment. Production still runs the earlier API. Reconciliation passed on a fresh production snapshot on thunk, not on production. Deploy the reviewed build, run the revision-checked reconciliation, and inspect the live pages before closing Task 006. Verification: CGO_ENABLED=0 go test ./..., CGO_ENABLED=0 go vet ./..., and git diff --check pass. Chromium exercised four routes at 390, 768, and 1280 pixels. The reconciliation rehearsal used a fresh production snapshot and /api/agent, including real Forgejo verification of the pushed Idea 2 handoff and PR #68 final commit. Remaining rollout criterion: deploy the reviewed build and reconcile production through the revision-checked agent API, then check live pages. The old production API safely refused the dry run; no production records or deployment were changed. Task 006 remains open. Instructions and the outcome-by-outcome review are in docs/tasks/0002/ROLLOUT.md and review.json. Verification limitation: squash verification proves a one-parent result on the PR merge base with the reviewed tree; it does not trust merge_method. Divergent bases or incomplete forge evidence fail closed. Browser coverage is Chromium, not iPad Safari. Preview on thunk: http://100.116.94.71:8091/ideas/2
arne changed title from WIP: Improve idea reading and implementation records (Idea 2) to Improve idea reading and implementation records (Idea 2) 2026-09-06 21:17:26 +02:00
arne merged commit f2df2d991d into main 2026-09-06 21:17:27 +02:00
Author
Owner

Deployed to https://fjomp.azf.no on meow. PR #69 was squash-merged as f2df2d9; production /api/agent reconciled the records and independently verified the final commit, marking Idea 2 complete. A narrow-screen overflow exposed by the final completion check was fixed in squash-merged PR #70 (de6a364), which is the deployed build. Final live Chromium checks pass on four routes at phone, tablet, and desktop widths, including expanded history and local font loading. Previous binary and consistent pre-upgrade database backup are retained under /var/lib/fjomp/backups. Production was not replaced with a preview database.

Deployed to https://fjomp.azf.no on meow. PR #69 was squash-merged as f2df2d9; production /api/agent reconciled the records and independently verified the final commit, marking Idea 2 complete. A narrow-screen overflow exposed by the final completion check was fixed in squash-merged PR #70 (de6a364), which is the deployed build. Final live Chromium checks pass on four routes at phone, tablet, and desktop widths, including expanded history and local font loading. Previous binary and consistent pre-upgrade database backup are retained under /var/lib/fjomp/backups. Production was not replaced with a preview database.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
arne/fjomp!69
No description provided.