feat(readme,skill,cli): the first screen an agent reads, three modes, and one flag that made two builds
`okf project` built a bundle two rules behind `okf build`. `cli.build`'s signature defaulted `keep_table_heading` and `sheet_section_rows` to `False` while argparse defaulted both to `True`, and `project.create` calls `build()` as a function. Measured on a five-document folder: 15 concepts / 30 files where `okf build` wrote 26 / 52, the whole difference in the priced sheet -- the document a question about price has to reach. The invariant test could not see it: it compared `project.create` against the same function, and its two fixture documents had neither a table nor a sheet. Both gaps are tests now, and the two paths are byte-equal on that folder (`diff -rq`, 0 differences). README opens with what / one install line / two commands / the three shapes of request; the phase-status paragraph moved down, nothing deleted. One tag is pinned everywhere: README pinned v0.4.0 on its install lines and v0.6.0 below, llms.txt pinned v0.4.0, so an agent reading from the top installed a tag without `okf project`. The skill states three modes -- question, hypothesis (per premise, `confirmed` / `refuted` / `undecidable-from-bundle`), and a task producing a document (source per claim in the artefact, an ungrounded paragraph written and marked rather than dropped, the cut declared inside the document). The five markings are untouched. Generated skills state relative paths in the project layout: `okf consume .okf/<id>` and `okf check --skill .claude/skills/<id>-consume/SKILL.md`, runnable from where `okf project` tells the reader to start `claude`. Two absolute paths to zero, measured with a query shown capable of finding first -- O5's published "4 -> 0" used `grep -c "^/"` against paths indented by two spaces. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
956714594d
commit
1260fac154
12 changed files with 532 additions and 43 deletions
35
CLAUDE.md
35
CLAUDE.md
|
|
@ -263,7 +263,40 @@ and fixtures, never code.
|
|||
`<id>` to the folder name reduced to `[a-z0-9-]`. It owns NO flag that moves
|
||||
a bundle's bytes and a test holds it byte-equal to `okf build`; two build
|
||||
paths would leave every measurement report pinned to a bundle nobody
|
||||
produces. `skills/okf-prosjekt/` is the Claude Code skill over it.
|
||||
produces. **That invariant was FALSE from the day those two
|
||||
flags became defaults until O6 measured it, and the test could not see it:** `cli.build`'s Python SIGNATURE defaulted
|
||||
`keep_table_heading` and `sheet_section_rows` to `False` while argparse
|
||||
defaulted both to `True`, and `project.create` calls `build()` as a function,
|
||||
so it read the signature. Measured on a five-document folder, `okf project`
|
||||
wrote **15 concepts / 30 files** against `okf build`'s **26 / 52**, the whole
|
||||
difference in the priced spreadsheet -- the document a question about price
|
||||
has to reach. The byte-equality test compared `project.create` against the
|
||||
same `build()`, so both sides carried the same wrong value, and its two
|
||||
fixture documents had neither a table nor a sheet: **a test and the code
|
||||
agreeing over a set where the difference cannot appear.** Two tests now hold
|
||||
it -- one comparing the signature's defaults against argparse's for every
|
||||
same-typed parameter, one building a document whose concept count actually
|
||||
moves with the two flags. `skills/okf-prosjekt/` is the Claude Code skill
|
||||
over it.
|
||||
- **The generated consumption skill states THREE modes and RELATIVE paths**
|
||||
(O6, 2026-09-09). Question (the default), hypothesis (decomposed into
|
||||
premises and answered PER PREMISE as `confirmed` / `refuted` /
|
||||
`undecidable-from-bundle` -- three literals, no fourth; a weak source is
|
||||
`[sourced-not-sufficient]` on that PREMISE, because four premises and one
|
||||
weak source is three answers and one gap), and a task producing a document
|
||||
(source per claim IN the artefact, an ungrounded paragraph written and marked
|
||||
rather than dropped, the cut declared inside the document because the
|
||||
document travels without the chat). The five markings are untouched -- the
|
||||
modes add no sixth. In the layout `okf project` writes, the commands are
|
||||
`okf consume .okf/<id>` and `okf check --skill
|
||||
.claude/skills/<id>-consume/SKILL.md`, runnable from the project root, which
|
||||
is where `okf project`'s own closing line tells the reader to start `claude`;
|
||||
a path OUTSIDE that root stays absolute on purpose, since `../../..` is not
|
||||
more portable, only harder to read. Two absolute paths to zero -- and
|
||||
**O5's published "4 absolute paths -> 0" was measured with `grep -c "^/"`
|
||||
against paths indented by two spaces**, a query that could not have found one
|
||||
either way, so the zero was never a measurement. Every path assertion here
|
||||
runs its pattern against a known-positive first.
|
||||
- Build a bundle: `okf build <folder> --bundle <dir> --bundle-id <id>
|
||||
--okf-version <v>` — the installed console script (`[project.scripts]`),
|
||||
the packaged form of what used to be a shell loop over two `tools/`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue