feat: knowledge filed by product area, with its business rules (v0.15.0) - #9
Merged
Merged
Conversation
- templates/area.md -> memory/areas/<area-slug>.md: one page per product area (web app: one menu path), business rules P1... in plain sentences, how it works, history per shipped feature - AGENTS.md rule 4 is one "what goes where" table; rules and history merge only on a shipped close; business rules never go to POLICY.md - summary.md reads like a note to a colleague: Area, Status, what was wrong, before -> after, how to check, remember - kb.sh: Product areas table and Area column in index; show <area> by file name, menu path, or page-less area; empty sections are not printed - intent/spec/verifier/ship use the area pages; compact route gains Baseline; probe 8, routing precedence, compact sources fixed
…im area tests to one per contract
…im area tests; pause CI (manual dispatch only)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
v0.15.0 — knowledge filed by product area, with its business rules
Records were filed by feature and date. Nobody could ask "what are the rules
for the submit screen?" without knowing which slug changed it. In real stores
DOMAIN.mdhad turned into long evidence sentences with file paths andhashes, not something a person reads.
summary.mdhad five one-line fieldsand no store had used it. This release files knowledge the way people
navigate a product, by area (for a web app, by menu), and gives business
rules (정책) one home. Gates, approvals, the
--jsonschema, and lazymode areunchanged.
Changes
Product area pages (
templates/area.md→memory/areas/<area>.md).There is one page per area. For a web app an area is one menu, named by its
menu path (
학습 > 평가 > 제출); for other software it is a module, API,job, or CLI command. Each page has:
Menu:,Where:, andAliases:lines;a non-developer can read, each with its source and the feature that set
it (P-numbers are never reused, and a retired rule stays struck through);
init.shseedsmemory/areas/. The page replaces DOMAIN.md's old"split into
memory/domain/<area>.md" overflow rule, so there is oneconcept instead of two.
What goes where, in one table (AGENTS.md rule 4). Business rules go to
the area page, area history to the page's History, cross-area terms and
facts to DOMAIN.md, traps to lessons, agent rules to POLICY.md (only on the
human's word, and never a business rule), and one feature's story to
summary.md. Every row except POLICY.md and summary.md is written only by
the close merge, which creates a missing area page from the template.
The loop uses the pages:
to change.
candidates (a new
Area candidatessection intemplates/harvest.md).summary.md reads like a note to a colleague: a Goal sentence as its
title, then
Area,Tags, andStatus(only what delivery.md confirms),followed by What was wrong, Before → After, How to check, and
Remember.
tools/kb.sh:indexopens with a Product areas table (live-rule count, lastchange, features, and areas a feature names that have no page yet).
show <name>falls back to a product area — the page's file name, itsexact menu path, or an area features name with no page yet — and prints
it with the features that name it. An
Area:line may use the menu pathor the file name.
searchalready coveredmemory/, so business rules are found by theirwords.
/or starting with.never resolves to a file.unfinished summary shows only what is known. Summaries print up to 20
lines (was 12).
showmiss reads "no feature or product area",showwithno argument asks for "a feature slug or a product area", an
--areamissreads "no such knowledge folder (--area)", the usage text lists
show <slug | product area>, the contents page's Search line namesshow <slug | area>, and the harvest and close hints name the areapages.
Rules and history describe what shipped. They merge only on a
shippedclose; any other close drops them, and a stale merge leavesthem in harvest.md for that close. The merge
gives a new rule the next number its page never used. A fact about one area
goes to that page's How it works. The spec template gains a Business
rules touched section, and the spec adversary and the verifier read the
area pages.
E2E lens findings from v0.14.0, fixed:
Baseline:line (build reads it).ahead of the generic change row.
disqualify it: the compact route has no spec to answer them.
Compatibility
Older summaries (Problem/Cause/… bullets) still print, now up to 20 lines. A store with
no
memory/areas/and noArea:lines gets no Product areas section. Theoverview table's header gains a column;
gates/knowledge-test.shH8 isupdated for that deliberate change.
Validation
bash gates/knowledge-test.sh→KNOWLEDGE-TEST PASS, 162 (H38–H55 new:seeding, areas table, live-rule count, page-less areas, ordering,
showbyfile name, by menu path, and for a page-less area, features per area,
search, unknown name, path walk, the shipped summary and area templates run
through
show/indexunfilled)Round 1 found the unfilled-template leak (blocking) and ~20 minor gaps. A
round-2 re-check found every one resolved (PASS), including against the old
kb.sh on seven real stores (only named differences, byte-identical
regeneration, unchanged exit codes). It also found four minor new gaps
(usage line, changelog wording, stale-merge rule loss, researcher
destination), and those were fixed.
bash gates/selftest.sh→SELFTEST PASSbash gates/e2e.sh→E2E PASS, 152 ·bash gates/autotest.sh→AUTOTEST PASS, 195