The operator built a 2313-concept bundle from one project's own documentation, asked it a question in his own words, and judged the result unusable. The generated skill was an audit contract: all its discipline sat on the accounting -- markings, denominators, budget lines, source pointers -- and none of it on understanding the question, searching again, or writing one coherent answer. Two sentences actively forbade the second of those. **The two forbidding sentences are gone and their replacements are tested from both sides.** "Do not go looking for context the pre-pass deliberately withheld" read as "one run per question", and no wording of the operator's question put the right document inside a single run's cut -- so a rule against a second run was a rule against finding it at all. "Not something to retry with a narrower question" generalised a budget-refusal case into the same ban. SS 2.2 of the contract said the first of them, so the contract moved with the skill rather than being left to disagree with it: a second pre-pass run with other terms, and a fetch of a concept the payload NAMED, are reachable; SS 9's two real boundaries -- directory enumeration, the verdict layer -- are not. **Two new sections, and the checker requires them.** `## Working method`: read the bundle's map, put the question into the bundle's own words, split a broad question into 2-4 sub-questions, search per sub-question, read what lay just outside the cut and search again with its words, same method across several bundles, then assemble ONE answer ordered by sub-question, saying which source holds and what is not covered. `## Answer form`: the questioner's language, plain prose, no `below_k`, no digests, no budget lines, no denominators; short textbook-style references (document + section, plus bundle where several were read); and the audit trail written only when the questioner asks for it or into a document that travels without the skill. `REQUIRED_SECTIONS` follows the template and the contract's new SS 2.5 and SS 2.6 -- never the other way round. **The generic skill becomes what `okf skill` and `okf project` write.** A per-bundle skill's numbers go stale the moment its bundle is rebuilt, one copy per consuming project, and a project with two bundles installs two near-identical skills; the generic form carries no bundle's numbers and names `okf card` for them. `--for-bundle` is the opt-in for the instantiated copy, which still refuses out loud on a stale pairing -- safe to keep, not enough to keep default. `rule_bundle_identity` learned to tell a generic skill from an unfilled template by the frontmatter name the generator writes, so the template still fails for the opposite reason: it declares no identity because it is unfinished. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
124 lines
3.8 KiB
JSON
124 lines
3.8 KiB
JSON
{
|
|
"contract": "okf-consumption/2",
|
|
"bundle": {
|
|
"bundle_id": "b-golden-segmented-okf-v0-2",
|
|
"ref": "sha256-tree:cce7a02c769793cdb6e3afda45c955461b57373deab13a986d8bf7843d6e436f"
|
|
},
|
|
"budget": {
|
|
"unit": "utf-8 bytes of emitted JSON",
|
|
"instrument": "okf_consume.measure (len of the ensure_ascii=False JSON encoding, utf-8)",
|
|
"limit": 120000,
|
|
"spent": 2289,
|
|
"known_positive": {
|
|
"case": "docs/consumption-contract.md, encoded as a JSON string",
|
|
"expected": 19839,
|
|
"measured": 19839,
|
|
"raw_bytes": 19360,
|
|
"encoding_delta": 479
|
|
}
|
|
},
|
|
"denominators": {
|
|
"considered": 3,
|
|
"withheld": 0,
|
|
"delivered": 3
|
|
},
|
|
"question": "Hva sier veiledningen om krav?",
|
|
"coverage": {
|
|
"question_terms": [
|
|
"hva",
|
|
"sier",
|
|
"veiledningen",
|
|
"krav"
|
|
],
|
|
"unanswered_in_bundle": [
|
|
"hva",
|
|
"sier"
|
|
],
|
|
"unanswered_in_payload": [
|
|
"hva",
|
|
"sier"
|
|
]
|
|
},
|
|
"excerpts": [
|
|
{
|
|
"bundle_id": "b-golden-segmented-okf-v0-2",
|
|
"concept_id": "krav/1-1/foerste-krav",
|
|
"sha256": "84145512284a8bbc1a8905c73d0de3f0e0cb7081cf517f778fe88a610d2b4f62",
|
|
"adjudication": "proposed",
|
|
"trust_tier": "unverified",
|
|
"bundle_id_inherited": false,
|
|
"title": "Foerste krav",
|
|
"sources": [
|
|
{
|
|
"resource": "veiledning.md",
|
|
"title": "veiledning.md"
|
|
}
|
|
],
|
|
"source_file": "veiledning.md",
|
|
"source_sha256": "6906ec0acbcfc246e825bda9863c716eb5611b465020e8204eeb448c32343f7d",
|
|
"source_lines": "[5, 8]",
|
|
"source_offset": "[94, 176]",
|
|
"parent": {
|
|
"concept_id": "veiledning",
|
|
"title": "Veiledning for eksempelbundel"
|
|
},
|
|
"text_sha256": "08447c690087834883a78fb9f40d474c68b2526ed57d0dafe01c4868db3c04f0",
|
|
"text": "\n## 1.1 Foerste krav\n\nEt krav som beskriver den foerste betingelsen i eksempelet.",
|
|
"rank": 1
|
|
},
|
|
{
|
|
"bundle_id": "b-golden-segmented-okf-v0-2",
|
|
"concept_id": "krav/1-2/andre-krav",
|
|
"sha256": "4f8a869aa4e898ec1a30595951b3e198e09091d76c41078a52e821000eb9e22c",
|
|
"adjudication": "proposed",
|
|
"trust_tier": "unverified",
|
|
"bundle_id_inherited": false,
|
|
"title": "Andre krav",
|
|
"sources": [
|
|
{
|
|
"resource": "veiledning.md",
|
|
"title": "veiledning.md"
|
|
}
|
|
],
|
|
"source_file": "veiledning.md",
|
|
"source_sha256": "6906ec0acbcfc246e825bda9863c716eb5611b465020e8204eeb448c32343f7d",
|
|
"source_lines": "[9, 11]",
|
|
"source_offset": "[176, 253]",
|
|
"parent": {
|
|
"concept_id": "veiledning",
|
|
"title": "Veiledning for eksempelbundel"
|
|
},
|
|
"text_sha256": "4c181e1debb141d3cb1a7bd47249fdac1c0b2c5db1b47cf255ef8f04f83ec840",
|
|
"text": "\n## 1.2 Andre krav\n\nEt krav som beskriver den andre betingelsen i eksempelet.",
|
|
"rank": 2
|
|
},
|
|
{
|
|
"bundle_id": "b-golden-segmented-okf-v0-2",
|
|
"concept_id": "veiledning",
|
|
"sha256": "8f1f4d940887b96b39496d0aceb7a4fa212553510165917427e4f7e9efb98b03",
|
|
"adjudication": "proposed",
|
|
"trust_tier": "unverified",
|
|
"bundle_id_inherited": false,
|
|
"title": "Veiledning for eksempelbundel",
|
|
"sources": [
|
|
{
|
|
"resource": "veiledning.md",
|
|
"title": "veiledning.md"
|
|
}
|
|
],
|
|
"source_file": "veiledning.md",
|
|
"source_sha256": "6906ec0acbcfc246e825bda9863c716eb5611b465020e8204eeb448c32343f7d",
|
|
"source_lines": "[1, 4]",
|
|
"source_offset": "[0, 94]",
|
|
"text_sha256": "82d67ff01367a1a56532130e077956048004ac047e6062eae2143d96704c4a92",
|
|
"text": "\n# Veiledning for eksempelbundel\n\nDenne teksten er syntetisk og finnes kun for a pinne bytes.",
|
|
"rank": 3
|
|
}
|
|
],
|
|
"withheld": {
|
|
"total": 0,
|
|
"by_rule": {},
|
|
"nearest": [],
|
|
"complete": true
|
|
}
|
|
}
|