Skip to content

feat: area pages — figures, menu-path file names, reader-first tables (v0.16.0) - #10

Merged
cskwork merged 4 commits into
mainfrom
feat/area-numbers
Sep 23, 2026
Merged

cskwork merged 4 commits into
mainfrom
feat/area-numbers

Conversation

@cskwork

@cskwork cskwork commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Summary

Four changes to product-area pages (memory/areas/), one unreleased version (v0.16.0):

  1. Figures (통계 산정). templates/area.md gains an optional Numbers section: one line per on-screen count, rate, score or chart figure, numbered N1… with the same permanence rules as a business rule — what it counts, out of what, real-time or batch. templates/spec.md "Business rules touched", ship's retrospective, templates/harvest.md, and AGENTS.md rule 4 treat a figure like a rule.

  2. File name = menu path. The file name is the Menu line with each > written -, and any of / \ : * ? " < > | replaced with -: Menu 교사 > 학생 > 학급 분석 → memory/areas/교사 - 학생 - 학급 분석.md. The ASCII kebab-case instruction is removed everywhere; AGENTS.md rule 4 and ship tell the close merge the rule when it creates a page. tools/kb.sh finds a page by file name, by Menu, or by the file name a Menu gives; it still refuses /, \ and a leading . as a file lookup; contents-page links percent-encode space % ( ) [ ] # < > so they open in GitHub and Obsidian.

  3. Reader-first layout. Plain language on top for a non-developer (Menu, Aliases, Business rules, Numbers, How it works, History — no source, no code); every source, verification and code location in a <details> block "근거 · 코드 위치 (개발자용)" at the bottom: the Where line and one - P1 — source · set by · [verified] evidence line per rule or figure. Evidence lines have no colon after the number, so the Rules count ignores them; a retired rule's reason lives on its evidence line. Section headings unchanged. kb.sh show prints the plain part first and labels the evidence block last. Harvest candidates, ship's retrospective and AGENTS.md now send sources to the evidence line. In a store with index_style: obsidian the evidence block is written as a folded callout instead (> [!info]- 근거 · 코드 위치 (개발자용), every line prefixed > ), since Obsidian does not render markdown inside <details>; kb.sh reads both forms (Where found, callout printed last without > , never counted as rules).

  4. Tables at a glance. Rules (| P1 | rule |), figures (| N1 | label | counted | out of | timing |), history (| date | feature | what changed |) and evidence (| P1 | source | set by | verified |, under the - Where: line) are markdown table rows; Menu, Aliases and How it works stay list lines. A retired rule is | ~~P3~~ | ~~rule~~ | with its reason in the evidence row's Source cell. Header words are free (| # | 정책 | works) — kb.sh keys on row shapes only: the Rules count reads | P<n> | rows above the evidence block, the last change reads History's first | YYYY-MM-DD | row, and show prints tables as written (callout rows without > ), dropping only template placeholder rows. The close merge writes rows; harvest candidates stay line-shaped.

Compatibility

Existing ASCII-named pages keep working — lookup by Menu, index listing and feature filing are unchanged; only new pages take the menu-path name. To rename: git mv the page to the name its Menu gives, then tools/kb.sh index (see log/changelog-v0.16.0.md). List-form pages (- P<n>: rules, - YYYY-MM-DD history lines) are still counted and dated, and a page may mix both forms. Old-style inline sources on a rule still count and print. Gates, approvals and the --json schema are unchanged.

Test plan

  • bash gates/selftest.sh → SELFTEST PASS. The "knowledge by product area" test now covers a Hangul menu-named page with spaces, laid out reader first with evidence lines and a retired rule: percent-encoded index link with Rules = 2, show by Menu and by file name prints rules before evidence, a path lookup is refused. A second page in the Obsidian callout form: Where read by kb_get, Rules = 1 even with a P2 evidence row inside, evidence printed last without the > prefix. Both pages are in table form with Korean header words (evidence, retired and placeholder rows not counted; last change from the History table); the list-form roster page still counts.
  • With the previous tools/kb.sh, the extended selftest fails (the test detects the change).

🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

cskwork and others added 2 commits September 23, 2026 09:41
- templates/area.md gains an optional Numbers (통계 산정) section between
  Business rules and How it works: one line per on-screen count, rate,
  score or chart figure, numbered N1... with the same permanence rules as
  a business rule (P-number)
- Extended only where omitting N-numbers would leave figures unprotected:
  templates/spec.md's Business rules touched section, ship's retrospective
  area-candidate instruction, templates/harvest.md's Area candidates
  format, and AGENTS.md rule 4's knowledge-filing table
- README.md / README.ko.md: one mention each in the product-area paragraph
  and the memory-tree comment
- kb.sh untouched: the Rules count stays P-only, no correctness gap

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- File name = menu path: the Menu line with each " > " written " - " and
  any of / \ : * ? " < > | replaced with "-" (교사 > 학생 > 학급 분석 →
  memory/areas/교사 - 학생 - 학급 분석.md). The ASCII kebab-case instruction
  is gone; AGENTS.md rule 4 and ship's retrospective tell the close merge
  the rule when it creates a page
- tools/kb.sh finds a page by file name, by Menu, or by the file name a
  Menu gives (kb_area_file); still refuses /, \ and a leading . as a file
  lookup; contents-page links percent-encode space % ( ) [ ] # < >
  (kb_area_href) so they open in GitHub and Obsidian; <summary> becomes a
  section label so show prints the plain part first, evidence last; an
  unfilled "- P1: <...>" template line is not counted or printed
- templates/area.md is reader first: plain rules, numbers, how it works and
  history on top; Where and one "P1 — source · set by · [verified]"
  evidence line per rule/figure inside a <details> block at the bottom; a
  retired rule's reason lives on its evidence line. Headings unchanged
- harvest.md, ship SKILL, AGENTS.md table: sources go to the evidence line
- selftest covers a Hangul menu-named page with spaces (lookup by Menu and
  file name, percent-encoded link, rule count ignores evidence/retired
  lines, path lookup refused)
- changelog v0.16.0 extended with a compatibility note: ASCII-named pages
  keep working; how to rename

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@cskwork cskwork changed the title feat: area pages record how a figure is calculated feat: area pages — figures, menu-path file names, reader-first layout (v0.16.0) Sep 23, 2026
cskwork and others added 2 commits September 23, 2026 13:00
Obsidian does not render markdown inside HTML blocks, so a <details>
evidence block collapses into one raw paragraph there. A store with
index_style: obsidian writes it as a folded callout instead:
  > [!info]- 근거 · 코드 위치 (개발자용)

- templates/area.md: <details> stays the default; one comment names the
  callout form for an Obsidian store
- tools/kb.sh: kb_field/kb_get drop a leading "> " so Where is found in a
  callout; kb_body treats a "> [!type]- X" line as the "X:" label and
  prints the callout's lines without "> "; kb_area_rules still counts only
  column-0 "- P<n>:" lines
- AGENTS.md, skills/5-ship, templates/harvest.md: "or the folded callout in
  an Obsidian store (index_style: obsidian)"
- selftest: a callout-form page (Where read by kb_get, rule count 1 with a
  "> - P2:" line inside, evidence printed last without the prefix)
- changelog v0.16.0: one entry

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…(v0.16.0)

- templates/area.md: Business rules | # | Rule |, Numbers | # | Label on
  screen | What is counted | Out of | Timing |, History | Date | Feature |
  What changed for the user |, and in the evidence block (<details> or the
  Obsidian callout) the - Where: line plus | # | Source | Set by | Verified |.
  Menu, Aliases and How it works stay list lines; a retired rule is
  | ~~P3~~ | ~~rule~~ | with the reason in its evidence row's Source cell;
  header words are free, a literal | in a cell is \|
- tools/kb.sh keys on row shapes only: kb_area_rules counts | P<n> | rows
  and old - P<n>: lines above the evidence block (stops at <details> or
  > [!...]); kb_area_last reads History's first | YYYY-MM-DD | row or the
  old list line; kb_body prints tables as written (callout rows without
  "> "), dropping only template placeholder rows and the header of a table
  left with no rows
- AGENTS.md rule 4, skills/5-ship, templates/harvest.md: the close merge
  writes rows (rule/figure/history and its evidence row); harvest
  candidates stay line-shaped
- README.md / README.ko.md: one mention each
- selftest: table-form pages in <details> and callout form with Korean
  headers (evidence, retired and placeholder rows not counted, last change
  from the History table, show prints tables with evidence last); the
  list-form page still counts
- changelog v0.16.0: tables entry + list-form compatibility note

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@cskwork cskwork changed the title feat: area pages — figures, menu-path file names, reader-first layout (v0.16.0) feat: area pages — figures, menu-path file names, reader-first tables (v0.16.0) Sep 23, 2026
@cskwork
cskwork merged commit 269e1f2 into main Sep 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant