Skip to content

Commit 01f34a7

Browse files
alicodingclaude
andauthored
docs: close goal 0041 — OSS trust standards delivered, v0.1.0 live (#82)
* docs: close goal 0041 — OSS trust standards delivered, v0.1.0 live Acceptance checked against what shipped (all four predicates evidenced in the archived file); the release exercise's own two pipeline-defect finds recorded. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FJ8wStsHyu7XPLTspNjMnQ * docs: goals 0042-0045 queued — owner-picked post-0041 plan (Group F) Markdown fidelity pass 2, the overdue hotkey-recorder accelerator bug, the M365 bridge dry run + capture-path research (absorbing goal 0021 Phase 4's last bullet), and the release-cadence rule with v0.2.0 gated on 0042. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FJ8wStsHyu7XPLTspNjMnQ --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent a40d2c2 commit 01f34a7

5 files changed

Lines changed: 177 additions & 0 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Goal 0042 — Confluence markdown fidelity, pass 2: close the pinned degradations
2+
3+
Owner-picked 2026-08-13 from the post-0041 planning round. Successor
4+
to goal 0021 Phase 4's first pass (PR #78), which fixed the
5+
table-structure loss and pinned five known degradations as goldens in
6+
`internal/adapters/markdown/testdata/confluence/` with named
7+
follow-up candidates. This goal implements those five.
8+
9+
## Goal
10+
11+
The five degradations the corpus currently pins become correct
12+
conversions, each proven by updating its existing golden:
13+
14+
1. **Code-block language hint** — parse Confluence's
15+
`data-syntaxhighlighter-params="brush: java; ..."` into a fenced
16+
block's language (` ```java `), the shim the reference Python
17+
exporter hand-rolls for the same reason (the library only reads
18+
`language-*` classes).
19+
2. **Task-list checkboxes**`ul.ak-task-list` /
20+
`li[data-task-state]` becomes GFM `- [ ]` / `- [x]`.
21+
3. **Emoji fallback**`img.emoticon[data-emoji-fallback]` emits the
22+
fallback text/emoji instead of today's dead relative image link
23+
(currently the worst-case output: worse than dropping).
24+
4. **Panel type** — info/note/warning/tip panels keep their type in
25+
the output (blockquote with a leading bold label, e.g.
26+
`> **Warning:** ...` — match what confluence-markdown exporters
27+
converge on rather than inventing).
28+
5. **Expand macro**`div.expand-container` becomes
29+
`<details><summary>` (HTML-in-markdown is valid GFM; the reference
30+
exporter does exactly this).
31+
32+
## Plan
33+
34+
Custom rules registered on the adapter's converter (the library's v2
35+
Register API), Mill-owned code in `internal/adapters/markdown/`
36+
commodity library, domain-owned conversion policy, consistent with
37+
the ports/adapters boundary. Check the library's own extension docs
38+
for the idiomatic registration shape before writing. Each rule's
39+
fixture golden updates in the same change; the corpus test is the
40+
proof. Delegated build once scoped; the five selectors and reference
41+
behaviors are recorded in goal 0021's Phase 4 research section.
42+
43+
## Acceptance (checkable)
44+
45+
- [ ] All five cases' goldens show the corrected output (no
46+
pinned-degradation wording left for them in the test names).
47+
- [ ] The seven already-correct cases' goldens unchanged.
48+
- [ ] Full local gate suite green; PR merged green.
49+
- [ ] Goal 0021's Phase 4 assessment table updated to reflect the new
50+
verdicts (this goal referenced from there).
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Goal 0043 — Hotkey recorder vs native menu accelerators
2+
3+
Owner-picked 2026-08-13. The underlying bug is owner-hit and recorded
4+
in goal 0001's "Live-review additions (2026-08-10)": while the
5+
Settings hotkey recorder is capturing, pressing a combo that is also
6+
a native menu accelerator (⌘⇧W closed the window — and Mill exits on
7+
last-window-close, so the app quit; ⌘Q would too) fires the menu
8+
action instead of being recorded, because macOS checks menu
9+
key-equivalents before the webview ever sees keydown. It was deferred
10+
"after the 0008 build lands" — 0008 landed 2026-08-10, so this is
11+
overdue.
12+
13+
## Goal
14+
15+
Recording a hotkey can never trigger a native menu action or quit the
16+
app; permanently-OS-reserved combos are surfaced to the user instead
17+
of silently failing.
18+
19+
## Plan (from the original live-review note, verify before building)
20+
21+
Suspend the app menu's accelerators while the recorder is active:
22+
swap in an accelerator-free menu on record-start, restore the real
23+
menu on capture/cancel/blur — plus a warning in the recorder UI for
24+
combos macOS reserves at the OS level (which no menu swap can
25+
reclaim). Needs the real desktop app for verification (menu behavior
26+
is OS-bound — manual-only registry entry per testing.md, plus unit
27+
coverage for whatever pure menu-construction logic the fix factors
28+
out).
29+
30+
## Acceptance (checkable)
31+
32+
- [ ] With the recorder active, ⌘⇧W / ⌘W / ⌘Q are captured as
33+
combos, not executed (manual desktop check, registry-listed).
34+
- [ ] Recorder cancel/blur restores the full menu (manual check).
35+
- [ ] Any pure logic extracted for the swap is unit-tested.
36+
- [ ] PR merged green.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Goal 0044 — M365 bridge dry run + capture-path research
2+
3+
Owner-picked 2026-08-13. Absorbs goal 0021 Phase 4's remaining
4+
bullet (the §2.1 M365 bridge dry run) so 0021 can archive on the
5+
owner's real-use-ready call without carrying open build work.
6+
7+
## Goal
8+
9+
Two deliverables, one session-shaped each:
10+
11+
1. **Bridge dry run** — compose the §2.1 core loop end to end with
12+
the pieces that exist today (capture → process → code-exec →
13+
clipboard; the "Example: Run copied code" and "Saved page →
14+
Markdown" seeds are the starting points), run it against a
15+
realistic captured page, and produce a concrete named-gaps list:
16+
what's missing between today's Mill and the real
17+
copy-from-Confluence → paste-into-M365 daily loop (DOM capture
18+
quality, auto-paste target, anything else the dry run surfaces).
19+
2. **Capture-path research** — the gating unknown from the
20+
enterprise-reality context: can a browser extension realistically
21+
load in a locked-down enterprise browser (managed-Chrome/Edge
22+
extension policy: allowlists, force-install lists, developer-mode
23+
blocking — what IT policy typically permits and what precedent
24+
exists for getting an internal tool approved), vs. the fallback
25+
ladder (save-page capture floor — already shipped; bookmarklet;
26+
clipboard-only). Research output is a decision-ready comparison,
27+
not a build.
28+
29+
## Plan
30+
31+
Dry run first (it sharpens what the research must answer). Research
32+
via agent with primary sources (enterprise browser policy docs,
33+
extension-policy references). No Mill code changes expected beyond
34+
possibly a seed tweak; if the dry run finds a small fixable gap, it
35+
rides per the below-goal-granularity rule.
36+
37+
## Acceptance (checkable)
38+
39+
- [ ] The dry run's gap list is written into this file, each gap
40+
named with what it would take.
41+
- [ ] The capture-path comparison (extension vs. fallback ladder,
42+
with policy precedent and sources) is written into this file,
43+
decision-ready for the owner.
44+
- [ ] Goal 0021's Phase 4 bullet points here and 0021's archival is
45+
unblocked (owner call remains its bar).

docs/goals/0045-release-cadence.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Goal 0045 — v0.2.0 and release cadence
2+
3+
Owner-picked 2026-08-13, deliberately tiny. v0.1.0 (goal 0041)
4+
proved the pipeline; this makes releases a rhythm instead of a
5+
one-off, without adding tooling before the recorded trigger
6+
(release-please stays deferred until the 2nd+ release exists — see
7+
archived goal 0041's defer list).
8+
9+
## Goal
10+
11+
A recorded, lightweight cadence rule plus the next release cut by it.
12+
13+
## Plan
14+
15+
Cadence rule (adopt unless the owner objects at cut time): **a
16+
release tags when a user-visible capability goal archives**, not on a
17+
clock — the release notes then describe something a user can feel.
18+
Concretely next: v0.2.0 cuts when goal 0042 (markdown fidelity pass
19+
2) archives, bundling whatever else landed since v0.1.0 (icon,
20+
React 19, fidelity pass 1). Mechanics per 0041: bump
21+
build/config.yml version in a PR, tag the merged commit, release.yml
22+
does the rest (now with timeouts and the headless-bindings guard).
23+
24+
## Acceptance (checkable)
25+
26+
- [ ] v0.2.0 live on GitHub Releases with attestation verified, cut
27+
after 0042 archives.
28+
- [ ] The cadence rule recorded in SPEC.md's release section (one
29+
sentence, LOCKED) in the same change.

docs/goals/BACKLOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,23 @@ backlog section in the same commit: **work discovered mid-session that
2828
outlives the session gets a goal file and a queue position before the
2929
session ends — never left only in an ephemeral session task list.**
3030

31+
**Group F — Real-use fidelity + rhythm (2026-08-13, owner-picked all
32+
four in the post-0041 planning round; this order recommended and
33+
accepted)**
34+
1. [ ] [0042 — Markdown fidelity pass 2](0042-markdown-fidelity-pass-2.md)
35+
— implement the five pinned Confluence degradations (language
36+
hints, task lists, emoji fallback, panel types, expand→details);
37+
corpus + goldens from PR #78 are the proof harness
38+
2. [ ] [0043 — Hotkey recorder vs menu accelerators](0043-hotkey-recorder-menu-accelerators.md)
39+
— overdue owner-hit bug (⌘⇧W while recording closed the app);
40+
accelerator-free menu swap during capture
41+
3. [ ] [0044 — M365 bridge dry run + capture research](0044-m365-bridge-dry-run.md)
42+
— absorbs goal 0021 Phase 4's last bullet; gap list + the
43+
browser-extension-at-a-locked-down-enterprise decision research
44+
4. [ ] [0045 — v0.2.0 + release cadence](0045-release-cadence.md)
45+
— tag-on-capability-goal-archive rule; v0.2.0 cuts when 0042
46+
archives
47+
3148
**Group E — Public-repo hygiene (2026-08-13, owner-directed: source
3249
comments explain code per standard practice — business/product
3350
decisions and the owner's own words live in docs/, cited by id, never

0 commit comments

Comments
 (0)