Audit: open issue hygiene (duplicates, already fixed, stale) #866

Open
opened 2026-10-02 16:47:38 +00:00 by kayg · 3 comments
Owner

Use scripts/fj (there is no list command; use search with broad terms and view each hit) to go through open issues #1-#851. For each: is it a duplicate (link both), already fixed on origin/dev (cite the commit from git log --grep and the code), or stale (superseded by a later owner decision)? Comment on each such issue with the evidence and a recommendation. Never close an issue. Put a summary table on your own issue: issue, status, evidence, recommended action.

Read-only job (LIGHT class)

This job runs at the lowest CPU priority on a shared, overloaded build host. Do not build or test: no cargo build/test/clippy/check, no bun install/build/test/run check, no servers, no browsers. Use rg, sed, git, scripts/fj, and reading. Write findings to audit-findings.md at the worktree root as you go (append per finding) and commit it on your branch. For each real defect: search existing issues first (scripts/fj --host https://git.kayg.org issue search --repo kayg/calternal "<terms>"), then either add evidence to the existing issue or create one self-contained issue (title, evidence with file:line, owner rule or DESIGN section, expected behaviour, test idea) that a later build job can own. Group findings that share one fix into one issue (one owner per shared fix). No product code changes. Post a summary with the list of issues on your own issue. Docs use ASD-STE100 Simplified Technical English.

Use scripts/fj (there is no list command; use search with broad terms and view each hit) to go through open issues #1-#851. For each: is it a duplicate (link both), already fixed on origin/dev (cite the commit from git log --grep and the code), or stale (superseded by a later owner decision)? Comment on each such issue with the evidence and a recommendation. Never close an issue. Put a summary table on your own issue: issue, status, evidence, recommended action. ## Read-only job (LIGHT class) This job runs at the lowest CPU priority on a shared, overloaded build host. **Do not build or test**: no `cargo build/test/clippy/check`, no `bun install/build/test/run check`, no servers, no browsers. Use `rg`, `sed`, `git`, `scripts/fj`, and reading. Write findings to `audit-findings.md` at the worktree root as you go (append per finding) and commit it on your branch. For each real defect: search existing issues first (`scripts/fj --host https://git.kayg.org issue search --repo kayg/calternal "<terms>"`), then either add evidence to the existing issue or create one self-contained issue (title, evidence with file:line, owner rule or DESIGN section, expected behaviour, test idea) that a later build job can own. Group findings that share one fix into one issue (one owner per shared fix). No product code changes. Post a summary with the list of issues on your own issue. Docs use ASD-STE100 Simplified Technical English.
Author
Owner

Started audit on branch job/issue-hygiene at base 440e19dce2 (origin/dev). I am reviewing open issues #1–#851 and recording evidence in audit-findings.md. No product files will be changed.

Started audit on branch job/issue-hygiene at base 440e19dce23040ac8ebaae88f0469b6535b1afcb (origin/dev). I am reviewing open issues #1–#851 and recording evidence in audit-findings.md. No product files will be changed.
Author
Owner

Audit summary

I searched the open issue set. The broad search returned 549 results, including 531 issues numbered #1–#851. I inspected the descriptions for the evidence-backed groups below and commented on each listed duplicate, fixed or superseded issue. I did not close any issue. The detailed record is committed in audit-findings.md.

Issue Status Evidence Recommended action
#256, #260 Duplicate Same four editor requests return transient 502 during restart; both report the edit later persisted. Keep #260; link #256 as a repeated run.
#337, #343 Duplicate Same entry not found atomic-write failure in the reconcile/watcher storm. #343 adds a deterministic race test. Keep #343; link #337.
#189, #216 Duplicate probe Same 64-SSE/20-mkdir probe; 7.2 s and 8.5 s under shared-host load. Keep #189; combine measurements. Treat load-only timing as evidence, not a merge blocker.
#521, #528 Duplicate Photos Tab remains at /files with “Opening Photos…” while API returns 200. Keep #528; link #521.
#520, #561 Duplicate probe defect Probe expects 200; route and OpenAPI contract return 202 with JobTriggerReceipt. Keep #561; correct the probe.
#223, #270 Duplicate Public-edit socket stays open after 301 empty frames, beyond the 300-frame limit. Keep #270; link #223.
#154, #177, #222 Repeated capture symptom Same 16-request bookmark storm and 10 s timeouts. #177 also has a separate site-search timeout. Keep #177; link the repeated capture runs and retain site search as a separate check.
#171, #185 Duplicate storm symptom Same 24-Task/12-worker storm. #171 confirms all Tasks and Index rows persisted. Keep #185; link #171's persistence evidence.
#205, #250, #264, #265, #267, #269 Partial duplicate Each reports Event-from-Log creation timing out at the 30 s client limit; other findings differ. Keep #250 for this operation; retain each issue's other findings.
#174, #193 Duplicate Another User's upload takes over 2 s during Home purge; same issue area as #78/#330. Link both runs to #330. Current probe keeps the 2 s check.
#557, #708 Partial overlap Both see DAV PUT 204 vs probe expectation 201, then stale-ETag 412. Appearance findings differ. Link the DAV symptom; keep Appearance findings separate and preserve current expectations.
#78, #330 Fixed on origin/dev f8e93b7e7 moves deletion to a restart-safe Worker; 211dd4577 bounds low-priority purge. wire.rs releases the mutation lock before 202; attack2.py checks 20 uploads. Record fix evidence; do not close in this audit.
#597–#600 Probe precondition fixed f64643562; tests/adversarial/restart.mjs:189-193 waits for the saved edit marker. Original data-integrity claim is still unconfirmed. Link the reports; retain one follow-up for recovery evidence.
#226 Fixed on origin/dev f087cceba; restart runner waits for the live probe marker (up to 600 s by default). Record runner fix; do not close.
#227 Fixed on origin/dev d6e5989f1; attack refreshes the owner assertion before key rotation. Record probe fix; retain freshness rule.
#266 Fixed on origin/dev 8cfb1c77d; test checks one successful recovery rotation and one InvalidToken. Record race fix; do not close.
#22 Implemented on origin/dev 6e755d35d; inbox, web push and controls exist in notifications code. Record merged implementation; do not close.
#56 Implemented on origin/dev 57118d964; Calendar range and year API routes exist. Record API implementation; broader UI remains separate.
#69 Implemented on origin/dev d238579e6; recurrence expansion handles RRULE, RDATE, EXDATE and RECURRENCE-ID. Record implementation; do not close.
#70 Implemented on origin/dev 01818d39f; Log PATCH, DELETE, conversion and repair API are present. Record API implementation; do not close.
#73 Implemented on origin/dev 5f7ef7ce8; one CopyLink.svelte component and clipboard helper remain. Record reuse fix; do not close.
#294 Superseded CONTEXT.md sets three visible Tabs; the rest scroll. Retire the 3–7 count setting and More slot proposal.
#41 Superseded in part DESIGN §46 sets one CalDAV calendar per #area Tag. Update the one-Journal-calendar shape; retain matching CalDAV work.
#55 Superseded DESIGN §40 stores task Notes flat in Notes/, not Tasks/. Update paths and keep matching task behavior.
#249 Superseded DESIGN §50 defines one Tabs page per enabled plugin and plugin ordering in Plugins. Use §50 as the source of truth.
#257 Superseded DESIGN §§45, 53 and 56 settle Mail scope, proxy and app email. Use #397, #486 and #575 for remaining work.
#395, #484 Re-scoped #484 uses one action registry and generated adapters; DESIGN §50 puts controls in Apps & Devices. Keep #484 as current scope; link #395 as the earlier request.
#300 Superseded Owner decision in #719 cancels the dedicated importer (#610 is already closed) in favor of generic folder drop; DESIGN §40 gives the Home layout. Use #719; do not close #300 in this audit.
#199 Superseded DESIGN §43 records the product/domain/operations and sign-in decisions requested by the research brief. Use §43; keep implementation work that follows it.
#66 Open implementation finding Shared and app-local edge-resize actions duplicate pointer/keyboard behavior, but differ in storage, collapse and reset. Consolidate the action and use the per-User settings store.
#204, #67, #54, #65 Open; no stale evidence found Requested #204 research doc is absent; Google Calendar remains in DESIGN; template UI is absent; deep-link coverage remains incomplete. Keep open pending implementation or a later owner decision.

Job record

  • Branch: job/issue-hygiene
  • Base: 440e19dce23040ac8ebaae88f0469b6535b1afcb
  • Head: f5569f17c569a25db2abf53469691ebe1a5004d2
  • git fetch origin && git merge origin/dev: Already up to date.
  • git diff --check: no output; exit 0.
  • Gate output: Not run: LIGHT-class job forbids build, test, clippy and check commands. No product build or test ran. cargo clean output: Removed 1 file, 356B total. No web build output directories were present.
  • Decisions beyond DESIGN: none. Recommendations follow the owner decisions cited above.
  • Known gap: the audit inspected the full search result titles and the descriptions for candidate groups, not every description in all 531 issues.
## Audit summary I searched the open issue set. The broad search returned 549 results, including 531 issues numbered #1–#851. I inspected the descriptions for the evidence-backed groups below and commented on each listed duplicate, fixed or superseded issue. I did not close any issue. The detailed record is committed in `audit-findings.md`. | Issue | Status | Evidence | Recommended action | | --- | --- | --- | --- | | #256, #260 | Duplicate | Same four editor requests return transient 502 during restart; both report the edit later persisted. | Keep #260; link #256 as a repeated run. | | #337, #343 | Duplicate | Same `entry not found` atomic-write failure in the reconcile/watcher storm. #343 adds a deterministic race test. | Keep #343; link #337. | | #189, #216 | Duplicate probe | Same 64-SSE/20-mkdir probe; 7.2 s and 8.5 s under shared-host load. | Keep #189; combine measurements. Treat load-only timing as evidence, not a merge blocker. | | #521, #528 | Duplicate | Photos Tab remains at `/files` with “Opening Photos…” while API returns 200. | Keep #528; link #521. | | #520, #561 | Duplicate probe defect | Probe expects 200; route and OpenAPI contract return 202 with `JobTriggerReceipt`. | Keep #561; correct the probe. | | #223, #270 | Duplicate | Public-edit socket stays open after 301 empty frames, beyond the 300-frame limit. | Keep #270; link #223. | | #154, #177, #222 | Repeated capture symptom | Same 16-request bookmark storm and 10 s timeouts. #177 also has a separate site-search timeout. | Keep #177; link the repeated capture runs and retain site search as a separate check. | | #171, #185 | Duplicate storm symptom | Same 24-Task/12-worker storm. #171 confirms all Tasks and Index rows persisted. | Keep #185; link #171's persistence evidence. | | #205, #250, #264, #265, #267, #269 | Partial duplicate | Each reports Event-from-Log creation timing out at the 30 s client limit; other findings differ. | Keep #250 for this operation; retain each issue's other findings. | | #174, #193 | Duplicate | Another User's upload takes over 2 s during Home purge; same issue area as #78/#330. | Link both runs to #330. Current probe keeps the 2 s check. | | #557, #708 | Partial overlap | Both see DAV PUT 204 vs probe expectation 201, then stale-ETag 412. Appearance findings differ. | Link the DAV symptom; keep Appearance findings separate and preserve current expectations. | | #78, #330 | Fixed on `origin/dev` | `f8e93b7e7` moves deletion to a restart-safe Worker; `211dd4577` bounds low-priority purge. `wire.rs` releases the mutation lock before 202; `attack2.py` checks 20 uploads. | Record fix evidence; do not close in this audit. | | #597–#600 | Probe precondition fixed | `f64643562`; `tests/adversarial/restart.mjs:189-193` waits for the saved edit marker. Original data-integrity claim is still unconfirmed. | Link the reports; retain one follow-up for recovery evidence. | | #226 | Fixed on `origin/dev` | `f087cceba`; restart runner waits for the live probe marker (up to 600 s by default). | Record runner fix; do not close. | | #227 | Fixed on `origin/dev` | `d6e5989f1`; attack refreshes the owner assertion before key rotation. | Record probe fix; retain freshness rule. | | #266 | Fixed on `origin/dev` | `8cfb1c77d`; test checks one successful recovery rotation and one `InvalidToken`. | Record race fix; do not close. | | #22 | Implemented on `origin/dev` | `6e755d35d`; inbox, web push and controls exist in notifications code. | Record merged implementation; do not close. | | #56 | Implemented on `origin/dev` | `57118d964`; Calendar range and year API routes exist. | Record API implementation; broader UI remains separate. | | #69 | Implemented on `origin/dev` | `d238579e6`; recurrence expansion handles RRULE, RDATE, EXDATE and RECURRENCE-ID. | Record implementation; do not close. | | #70 | Implemented on `origin/dev` | `01818d39f`; Log PATCH, DELETE, conversion and repair API are present. | Record API implementation; do not close. | | #73 | Implemented on `origin/dev` | `5f7ef7ce8`; one `CopyLink.svelte` component and clipboard helper remain. | Record reuse fix; do not close. | | #294 | Superseded | `CONTEXT.md` sets three visible Tabs; the rest scroll. | Retire the 3–7 count setting and More slot proposal. | | #41 | Superseded in part | DESIGN §46 sets one CalDAV calendar per `#area` Tag. | Update the one-Journal-calendar shape; retain matching CalDAV work. | | #55 | Superseded | DESIGN §40 stores task Notes flat in `Notes/`, not `Tasks/`. | Update paths and keep matching task behavior. | | #249 | Superseded | DESIGN §50 defines one Tabs page per enabled plugin and plugin ordering in Plugins. | Use §50 as the source of truth. | | #257 | Superseded | DESIGN §§45, 53 and 56 settle Mail scope, proxy and app email. | Use #397, #486 and #575 for remaining work. | | #395, #484 | Re-scoped | #484 uses one action registry and generated adapters; DESIGN §50 puts controls in Apps & Devices. | Keep #484 as current scope; link #395 as the earlier request. | | #300 | Superseded | Owner decision in #719 cancels the dedicated importer (#610 is already closed) in favor of generic folder drop; DESIGN §40 gives the Home layout. | Use #719; do not close #300 in this audit. | | #199 | Superseded | DESIGN §43 records the product/domain/operations and sign-in decisions requested by the research brief. | Use §43; keep implementation work that follows it. | | #66 | Open implementation finding | Shared and app-local edge-resize actions duplicate pointer/keyboard behavior, but differ in storage, collapse and reset. | Consolidate the action and use the per-User settings store. | | #204, #67, #54, #65 | Open; no stale evidence found | Requested #204 research doc is absent; Google Calendar remains in DESIGN; template UI is absent; deep-link coverage remains incomplete. | Keep open pending implementation or a later owner decision. | ## Job record - Branch: `job/issue-hygiene` - Base: `440e19dce23040ac8ebaae88f0469b6535b1afcb` - Head: `f5569f17c569a25db2abf53469691ebe1a5004d2` - `git fetch origin && git merge origin/dev`: `Already up to date.` - `git diff --check`: no output; exit 0. - Gate output: `Not run: LIGHT-class job forbids build, test, clippy and check commands.` No product build or test ran. `cargo clean` output: `Removed 1 file, 356B total`. No web build output directories were present. - Decisions beyond DESIGN: none. Recommendations follow the owner decisions cited above. - Known gap: the audit inspected the full search result titles and the descriptions for candidate groups, not every description in all 531 issues.
Author
Owner

This earlier audit records that it did not inspect every issue description. The current sweep inventories all open titles and activity dates, closes only evidence-backed items, and records unresolved scope in a new 2026-10-03 sweep issue. Leaving this audit open until its full description-review scope is accounted for.

This earlier audit records that it did not inspect every issue description. The current sweep inventories all open titles and activity dates, closes only evidence-backed items, and records unresolved scope in a new 2026-10-03 sweep issue. Leaving this audit open until its full description-review scope is accounted for.
Sign in to join this conversation.
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
kayg/calternal#866
No description provided.