[{"data":1,"prerenderedAt":1147},["ShallowReactive",2],{"docs-sections":3,"docs-page-\u002Fdocs\u002Fproduct-model":124},[4,9,13,17,21,25,30,34,38,42,46,50,54,58,62,66,71,75,79,83,88,92,96,100,104,108,112,116,120],{"path":5,"title":6,"description":7,"group":8},"\u002Fdocs","Introduction","pdd-kit brings Product-Driven Development to coding agents through a Git-tracked Product Model and an automatic verification loop.","Get started",{"path":10,"title":11,"description":12,"group":8},"\u002Fdocs\u002Finstallation","Installation","Install the pdd-kit skills into your coding agent at project or global scope.",{"path":14,"title":15,"description":16,"group":8},"\u002Fdocs\u002Ffrom-your-repo","From your repo","Map what an existing repository already does into a Product Model, review it, then check the code against it.",{"path":18,"title":19,"description":20,"group":8},"\u002Fdocs\u002Ffrom-an-idea","From an idea","Decide what a new product does, approve its Product Model, then ask your agent to implement it while verify checks each part.",{"path":22,"title":23,"description":24,"group":8},"\u002Fdocs\u002Ffrom-a-blueprint","From a Blueprint","Pull a reviewed Product Model for a common kind of product instead of starting blank, adapt it if needed, then ask your agent to implement it.",{"path":26,"title":27,"description":28,"group":29},"\u002Fdocs\u002Fproduct-model","Model overview","The Product Model in five minutes (what the product-model\u002F folder holds, what each resource type is for, and how to tell them apart).","Product Model",{"path":31,"title":32,"description":33,"group":29},"\u002Fdocs\u002Fproduct","Product","The one product a Product Model describes (its name, its promise, the languages it is delivered in, its known boundaries, and what it needs to be published as a Blueprint).",{"path":35,"title":36,"description":37,"group":29},"\u002Fdocs\u002Fentities","Entities","The things your product keeps or reasons about (orders, products, settings) and the people and systems that act on it, with what it knows about each and the States it moves through.",{"path":39,"title":40,"description":41,"group":29},"\u002Fdocs\u002Finterfaces","Interfaces","The web apps, mobile apps, CLIs, APIs and webhooks through which people and systems reach your product, the parts inside them, and the places where facts and abilities are met.",{"path":43,"title":44,"description":45,"group":29},"\u002Fdocs\u002Fdomains","Domains","Optional subject areas, such as ordering or billing, that follow the Product's own sections and group its Capabilities and Entities without owning them.",{"path":47,"title":48,"description":49,"group":29},"\u002Fdocs\u002Fcapabilities","Capabilities","The things your product lets someone do, where each is offered, and the Capability Scenarios that show each one working.",{"path":51,"title":52,"description":53,"group":29},"\u002Fdocs\u002Fjourneys","Journeys","Goals where your product carries a person from one Capability into the next, and the Journey Scenarios that walk each path.",{"path":55,"title":56,"description":57,"group":29},"\u002Fdocs\u002Fbusiness-rules","Business Rules","What must always hold in your product, and who may do what (constraints, derivations and permissions), each stated once with everything it applies to.",{"path":59,"title":60,"description":61,"group":29},"\u002Fdocs\u002Fvariations","Variations","Feature flags, settings, plan tiers, A\u002FB tests and API versions, when your product works in more than one supported way and something decides which way applies.",{"path":63,"title":64,"description":65,"group":29},"\u002Fdocs\u002Freferences","References","Point any resource at material kept outside the model (code, a PRD, a design, research), saying what it is and why it is attached.",{"path":67,"title":68,"description":69,"group":70},"\u002Fdocs\u002Fskills","Skills overview","Three self-contained skills cover adoption, intended product change, and automatic verification-to-resolution.","Skills",{"path":72,"title":73,"description":74,"group":70},"\u002Fdocs\u002Fskill-pdd-map","map","Create or expand a Product Model from the code you already have, without running it.",{"path":76,"title":77,"description":78,"group":70},"\u002Fdocs\u002Fskill-pdd-ideate","ideate","Explore or define intended behavior, then write only the exact Product Model change you approve.",{"path":80,"title":81,"description":82,"group":70},"\u002Fdocs\u002Fskill-pdd-verify","verify","Implement the Product Model in code, in phases, or check that the model and the code agree, and resolve every gap you approve until they do or something blocks.",{"path":84,"title":85,"description":86,"group":87},"\u002Fdocs\u002Fcli","CLI overview","Install skills, lint and view a Product Model locally, and move Blueprints between repositories with the pdd-kit CLI.","CLI",{"path":89,"title":90,"description":91,"group":87},"\u002Fdocs\u002Fcli-install","install","Install the bundled pdd-kit agent skills safely for selected AI harnesses and scopes.",{"path":93,"title":94,"description":95,"group":87},"\u002Fdocs\u002Fcli-update","update","Refresh only pdd-kit-managed skill installations in project or global scope.",{"path":97,"title":98,"description":99,"group":87},"\u002Fdocs\u002Fcli-lint","lint","Check that a Product Model is structurally sound (files, relationships, Steps, Rules and References) without claiming it matches the code.",{"path":101,"title":102,"description":103,"group":87},"\u002Fdocs\u002Fcli-view","view","Open a Product Model as a private local report, from your checkout or from a GitHub repository.",{"path":105,"title":106,"description":107,"group":87},"\u002Fdocs\u002Fcli-export","blueprint export","Compile a Product Model into a portable Product Report that can move safely between repositories.",{"path":109,"title":110,"description":111,"group":87},"\u002Fdocs\u002Fcli-open","blueprint open","Expand a local Product Report into a canonical Product Model.",{"path":113,"title":114,"description":115,"group":87},"\u002Fdocs\u002Fcli-list","blueprint list","List the published Blueprints you can pull.",{"path":117,"title":118,"description":119,"group":87},"\u002Fdocs\u002Fcli-pull","blueprint pull","Pull a published Blueprint into the current directory.",{"path":121,"title":122,"description":123,"group":87},"\u002Fdocs\u002Fcli-contribute","blueprint contribute","Open a pull request proposing your Product Model as a Blueprint.",{"id":125,"title":27,"body":126,"description":28,"extension":742,"group":29,"meta":1132,"navigation":919,"order":804,"path":26,"seo":1144,"stem":1145,"__hash__":1146},"docs\u002Fdocs\u002Fproduct-model.md",{"type":127,"value":128,"toc":1121},"minimark",[129,134,155,158,163,170,180,195,199,359,370,373,377,521,525,591,596,689,693,700,719,723,738,932,1003,1026,1030,1033,1106,1109,1117],[130,131,133],"h1",{"id":132},"the-product-model","The Product Model",[135,136,137,146,147,154],"p",{},[138,139,140,141,145],"strong",{},"A Product Model is a folder of Markdown files, ",[142,143,144],"code",{},"product-model\u002F",", that says what\none product does today: for whom, where, with what, and under which rules."," It\nlives in your repository, changes in pull requests, and is checked by\n",[148,149,151],"a",{"href":150},".\u002Fcli-lint",[142,152,153],{},"pdd-kit lint",", which reports every rule a file breaks.",[135,156,157],{},"It describes the product, not the code: no files, frameworks or endpoints, only\nwhat a person using the product could confirm.",[159,160,162],"h2",{"id":161},"the-shape-of-a-model","The shape of a model",[135,164,165,166,169],{},"Each file is one ",[138,167,168],{},"resource",", and the folder it sits in decides its type.",[171,172,178],"pre",{"className":173,"code":175,"language":176,"meta":177},[174],"language-text","product-model\u002F\n├── product.md              # the one Product\n├── coverage.md             # which code the model accounts for\n├── interfaces\u002F             # where people and systems meet the Product\n│   └── customer-web\u002F\n│       ├── interface.md\n│       └── experiences\u002Fstorefront\u002F\n│           ├── experience.md\n│           └── screens\u002Forder-status.md\n├── entities\u002F               # what the Product keeps, including who acts\n├── domains\u002F                # optional subject areas\n├── capabilities\u002F           # what the Product can do\n│   └── place-order\u002F\n│       ├── capability.md\n│       └── scenarios\u002Fcomplete-checkout.md\n├── journeys\u002F               # goals that need several Capabilities\n├── business-rules\u002F         # what must stay true, and who may act\n├── variations\u002F             # supported alternatives, and what picks one\n├── config.yaml  taxonomies.yaml  README.md  .gitignore\n","text","",[142,179,175],{"__ignoreMap":177},[135,181,182,183,186,187,190,191,194],{},"Two trees and a few cross-links. ",[138,184,185],{},"Where",": Interface → Experience → Screen.\n",[138,188,189],{},"What",": Capability → Scenario, and Journey → Scenario. A Capability's\n",[142,192,193],{},"availability"," (the places, each an Interface or Experience, where it is\noffered) joins the two, Domains group by subject, and Business Rules and\nVariations attach across everything.",[159,196,198],{"id":197},"what-belongs-in-a-model","What belongs in a model",[200,201,202,218],"table",{},[203,204,205],"thead",{},[206,207,208,212,215],"tr",{},[209,210,211],"th",{},"Resource type",[209,213,214],{},"How many",[209,216,217],{},"What it's for",[219,220,221,235,252,266,280,294,307,320,333,346],"tbody",{},[206,222,223,229,232],{},[224,225,226],"td",{},[148,227,32],{"href":228},".\u002Fproduct",[224,230,231],{},"Exactly one",[224,233,234],{},"The product's promise and its boundary",[206,236,237,243,246],{},[224,238,239],{},[148,240,242],{"href":241},".\u002Fentities","Entity",[224,244,245],{},"At least one that acts",[224,247,248,249],{},"A thing the Product keeps: what it knows about it and the states it moves through. An Entity that acts (a person or a system) is an ",[138,250,251],{},"Actor",[206,253,254,260,263],{},[224,255,256],{},[148,257,259],{"href":258},".\u002Finterfaces","Interface",[224,261,262],{},"At least one",[224,264,265],{},"A surface the Product offers: a web app, a mobile app, a CLI, an API, a webhook",[206,267,268,274,277],{},[224,269,270],{},[148,271,273],{"href":272},".\u002Finterfaces#experiences","Experience",[224,275,276],{},"When an Interface needs dividing",[224,278,279],{},"A context inside one Interface with its own audience and access",[206,281,282,288,291],{},[224,283,284],{},[148,285,287],{"href":286},".\u002Finterfaces#screens","Screen",[224,289,290],{},"Optional",[224,292,293],{},"A place: what an Actor sees and can do there",[206,295,296,302,304],{},[224,297,298],{},[148,299,301],{"href":300},".\u002Fdomains","Domain",[224,303,290],{},[224,305,306],{},"A subject area grouping Capabilities and Entities",[206,308,309,315,317],{},[224,310,311],{},[148,312,314],{"href":313},".\u002Fcapabilities","Capability",[224,316,262],{},[224,318,319],{},"Something the Product can do, proven by its Scenarios",[206,321,322,328,330],{},[224,323,324],{},[148,325,327],{"href":326},".\u002Fjourneys","Journey",[224,329,290],{},[224,331,332],{},"An Actor's goal that takes several Capabilities",[206,334,335,341,343],{},[224,336,337],{},[148,338,340],{"href":339},".\u002Fbusiness-rules","Business Rule",[224,342,290],{},[224,344,345],{},"Something that must stay true, and the only place that says who may act",[206,347,348,354,356],{},[224,349,350],{},[148,351,353],{"href":352},".\u002Fvariations","Variation",[224,355,290],{},[224,357,358],{},"Two or more supported ways, and what decides which applies",[135,360,361,362,365,366,369],{},"Capabilities and Journeys each own ",[138,363,364],{},"Scenarios",": concrete cases with a trigger,\n",[138,367,368],{},"Steps"," and an outcome. A Step names the place it happens: a Screen,\nExperience or Interface.",[135,371,372],{},"Create an optional type only when it says something real. A small model is still\na valid one.",[159,374,376],{"id":375},"which-type-is-this","Which type is this?",[200,378,379,389],{},[203,380,381],{},[206,382,383,386],{},[209,384,385],{},"What you're looking at",[209,387,388],{},"Model it as",[219,390,391,401,409,417,426,437,445,455,463,472,481,489,499,508],{},[206,392,393,396],{},[224,394,395],{},"A thing someone would call \"this one\", such as an order or a refund",[224,397,398,399],{},"An ",[148,400,242],{"href":241},[206,402,403,406],{},[224,404,405],{},"A person or system that starts something in the Product",[224,407,408],{},"An Entity that acts",[206,410,411,414],{},[224,412,413],{},"Something the Product calls out to, like a payment API",[224,415,416],{},"No Interface: the Capability that calls it says so in its prose",[206,418,419,422],{},[224,420,421],{},"A surface that receives requests, such as an app, a CLI or a webhook",[224,423,398,424],{},[148,425,259],{"href":258},[206,427,428,431],{},[224,429,430],{},"Signed-out and signed-in parts of one Interface",[224,432,433,434],{},"Two ",[148,435,436],{"href":272},"Experiences",[206,438,439,442],{},[224,440,441],{},"An empty or unauthorized view",[224,443,444],{},"A condition in the Scenario that meets it, not a Screen",[206,446,447,450],{},[224,448,449],{},"One thing the Product does",[224,451,452,453],{},"A ",[148,454,314],{"href":313},[206,456,457,460],{},[224,458,459],{},"One case of it (success, refusal, edge)",[224,461,462],{},"A Scenario of that Capability",[206,464,465,468],{},[224,466,467],{},"A goal that takes several Capabilities",[224,469,452,470],{},[148,471,327],{"href":326},[206,473,474,477],{},[224,475,476],{},"A rule shared by two or more behaviors, or any \"who may\"",[224,478,452,479],{},[148,480,340],{"href":339},[206,482,483,486],{},[224,484,485],{},"A constraint true of one behavior only (not a \"who may\")",[224,487,488],{},"A condition Step in its Scenario",[206,490,491,494],{},[224,492,493],{},"A navigation section with two or more Capabilities",[224,495,452,496],{},[148,497,301],{"href":498},".\u002Fdomains#when-you-create-one",[206,500,501,504],{},[224,502,503],{},"A flag, plan or setting that switches between supported ways (not one that only decides who may)",[224,505,452,506],{},[148,507,353],{"href":352},[206,509,510,513],{},[224,511,512],{},"Looks, layout, copy",[224,514,515,516,520],{},"Nothing: design, attached as a ",[148,517,519],{"href":518},".\u002Freferences","Reference",", a link to a file or page",[159,522,524],{"id":523},"authoring-conventions","Authoring conventions",[526,527,528,551,565,571,577,585],"ul",{},[529,530,531,534,535,538,539,542,543,546,547,550],"li",{},[138,532,533],{},"Compact or expanded."," A resource is ",[142,536,537],{},"\u003Cid>.md",". When it gains children or\nfiles of its own, move it to ",[142,540,541],{},"\u003Cid>\u002F\u003Ctype>.md",": ",[142,544,545],{},"place-order.md"," becomes\n",[142,548,549],{},"place-order\u002Fcapability.md",". Never both.",[529,552,553,556,557,560,561,564],{},[138,554,555],{},"The path is the id",", and owns every parent: a Scenario never names its\nCapability. Interfaces, Experiences and Screens join their path with ",[142,558,559],{},"::",",\nas in ",[142,562,563],{},"customer-web::storefront::order-status",".",[529,566,567,570],{},[138,568,569],{},"The H1 is the title",", and the paragraph under it the description (Journeys\nand Scenarios use their own sections instead).",[529,572,573,576],{},[138,574,575],{},"Frontmatter holds relations; prose holds meaning."," Unknown frontmatter keys\nare errors, not ignored.",[529,578,579,584],{},[138,580,581],{},[142,582,583],{},"## Intent"," says why a resource exists and which outcome it protects\n(\"Complete a purchase without confirming an unpaid order\"), not what it does.",[529,586,587,590],{},[138,588,589],{},"The model holds the present."," No plans, priorities, metrics, or rejected\noptions; those stay in the conversation or your planning tool.",[592,593,595],"h3",{"id":594},"naming","Naming",[526,597,598,612,631,644,660,673],{},[529,599,600,603,604,607,608,611],{},[138,601,602],{},"Things that happen are verb-noun",": Capabilities, Journeys and Scenarios\n(",[142,605,606],{},"browse-catalog",", not ",[142,609,610],{},"catalog-browsing",").",[529,613,614,542,617,620,621,620,624,627,628,564],{},[138,615,616],{},"Everything else is a bare noun",[142,618,619],{},"shopper",", ",[142,622,623],{},"ordering",[142,625,626],{},"customer-web",". A\nBusiness Rule reads as a statement, never a command:\n",[142,629,630],{},"refunds-need-an-operator",[529,632,633,636,637,640,641,564],{},[138,634,635],{},"Use the Product's own words",", from its screens and menus, never API values\nor code names: a role the screens call Editor is ",[142,638,639],{},"editor",", even if the API\nsends ",[142,642,643],{},"member",[529,645,646,649,650,652,653,656,657,564],{},[138,647,648],{},"Name a Capability after its button"," (Archive, Share, Publish). Where the\nbutton only says Save, never use ",[142,651,94],{},": a Profile page in Settings saved\nwith one button is ",[142,654,655],{},"change-profile-settings","; a form editing one thing's own\nfacts is ",[142,658,659],{},"edit-\u003Cthing>",[529,661,662,665,666,670,671,564],{},[138,663,664],{},"The title may read naturally; the id stays verb-noun",": the Capability\ntitled ",[667,668,669],"em",{},"Catalog browsing"," has the id ",[142,672,606],{},[529,674,675,542,678,607,681,684,685,688],{},[138,676,677],{},"Reuse declared nouns",[142,679,680],{},"install-agent-skills",[142,682,683],{},"install-skills",", when\n",[142,686,687],{},"agent-skills"," is already an Interface.",[159,690,692],{"id":691},"is-this-replacing-my-prd","Is this replacing my PRD?",[135,694,695,696,699],{},"No. ",[138,697,698],{},"A PRD argues for a change; a Product Model describes the product."," A PRD\nis future tense, one initiative, and history once the decision is made. The\nmodel is present tense, covers the whole product, and is either true now or\nwrong.",[135,701,702,703,709,710,713,715,716,564],{},"The model holds no timeline, priority, metrics, market case or risk: real\nproduct work, but not what the product does. The PRD's requirements section is\nthe overlap, and ",[148,704,706],{"href":705},".\u002Fskill-pdd-ideate",[142,707,708],{},"pdd-ideate"," writes\nit straight into the model. Attach the PRD itself as a ",[142,711,712],{},"prd",[148,714,519],{"href":518}," with ",[142,717,718],{},"role: intent",[159,720,722],{"id":721},"coverage","Coverage",[135,724,725,728,729,732,733,564],{},[138,726,727],{},"Coverage is about code, not the product."," ",[142,730,731],{},"coverage.md"," says which of the\nrepository's code the model accounts for, at the highest level that still\ntells an agent where to look and what to ignore. What the Product is or is not\nbelongs in ",[148,734,735],{"href":228},[142,736,737],{},"product.md",[171,739,743],{"className":740,"code":741,"filename":731,"language":742,"meta":177,"style":177},"language-md shiki shiki-themes pdd-kit-brand-warm pdd-kit-brand-warm material-theme-palenight","---\nscope: The storefront and order services.\nmethod: Static inspection of source and documentation.\ncovered:\n  - description: Checkout and order tracking code.\n    paths: [src\u002Fcheckout\u002F, src\u002Forders\u002F]\nexclusions:\n  - description: The design system and email templates.\n    paths: [src\u002Fui\u002F, emails\u002F]\nunmapped:\n  - description: Background fulfillment jobs.\n    paths: [server\u002Fjobs\u002F]\nlimitations: []\n---\n\n# Coverage\n","md",[142,744,745,754,768,779,788,802,825,833,845,864,872,884,898,909,914,921],{"__ignoreMap":177},[746,747,750],"span",{"class":748,"line":749},"line",1,[746,751,753],{"class":752},"sjkiA","---\n",[746,755,757,761,764],{"class":748,"line":756},2,[746,758,760],{"class":759},"sg1QC","scope",[746,762,763],{"class":752},":",[746,765,767],{"class":766},"s9fN-"," The storefront and order services.\n",[746,769,771,774,776],{"class":748,"line":770},3,[746,772,773],{"class":759},"method",[746,775,763],{"class":752},[746,777,778],{"class":766}," Static inspection of source and documentation.\n",[746,780,782,785],{"class":748,"line":781},4,[746,783,784],{"class":759},"covered",[746,786,787],{"class":752},":\n",[746,789,791,794,797,799],{"class":748,"line":790},5,[746,792,793],{"class":752},"  -",[746,795,796],{"class":759}," description",[746,798,763],{"class":752},[746,800,801],{"class":766}," Checkout and order tracking code.\n",[746,803,805,808,810,813,816,819,822],{"class":748,"line":804},6,[746,806,807],{"class":759},"    paths",[746,809,763],{"class":752},[746,811,812],{"class":752}," [",[746,814,815],{"class":766},"src\u002Fcheckout\u002F",[746,817,818],{"class":752},",",[746,820,821],{"class":766}," src\u002Forders\u002F",[746,823,824],{"class":752},"]\n",[746,826,828,831],{"class":748,"line":827},7,[746,829,830],{"class":759},"exclusions",[746,832,787],{"class":752},[746,834,836,838,840,842],{"class":748,"line":835},8,[746,837,793],{"class":752},[746,839,796],{"class":759},[746,841,763],{"class":752},[746,843,844],{"class":766}," The design system and email templates.\n",[746,846,848,850,852,854,857,859,862],{"class":748,"line":847},9,[746,849,807],{"class":759},[746,851,763],{"class":752},[746,853,812],{"class":752},[746,855,856],{"class":766},"src\u002Fui\u002F",[746,858,818],{"class":752},[746,860,861],{"class":766}," emails\u002F",[746,863,824],{"class":752},[746,865,867,870],{"class":748,"line":866},10,[746,868,869],{"class":759},"unmapped",[746,871,787],{"class":752},[746,873,875,877,879,881],{"class":748,"line":874},11,[746,876,793],{"class":752},[746,878,796],{"class":759},[746,880,763],{"class":752},[746,882,883],{"class":766}," Background fulfillment jobs.\n",[746,885,887,889,891,893,896],{"class":748,"line":886},12,[746,888,807],{"class":759},[746,890,763],{"class":752},[746,892,812],{"class":752},[746,894,895],{"class":766},"server\u002Fjobs\u002F",[746,897,824],{"class":752},[746,899,901,904,906],{"class":748,"line":900},13,[746,902,903],{"class":759},"limitations",[746,905,763],{"class":752},[746,907,908],{"class":752}," []\n",[746,910,912],{"class":748,"line":911},14,[746,913,753],{"class":752},[746,915,917],{"class":748,"line":916},15,[746,918,920],{"emptyLinePlaceholder":919},true,"\n",[746,922,924,928],{"class":748,"line":923},16,[746,925,927],{"class":926},"sKwZ8","#",[746,929,931],{"class":930},"sBbkF"," Coverage\n",[200,933,934,944],{},[203,935,936],{},[206,937,938,941],{},[209,939,940],{},"Field",[209,942,943],{},"Says",[219,945,946,955,967,976,985,994],{},[206,947,948,952],{},[224,949,950],{},[142,951,760],{},[224,953,954],{},"How much of the code the model accounts for",[206,956,957,961],{},[224,958,959],{},[142,960,773],{},[224,962,963,964],{},"How the code was inspected, in one line, or ",[142,965,966],{},"\"\"",[206,968,969,973],{},[224,970,971],{},[142,972,784],{},[224,974,975],{},"Code whose behavior the model describes",[206,977,978,982],{},[224,979,980],{},[142,981,830],{},[224,983,984],{},"Code that is not product behavior, such as presentation or packaging",[206,986,987,991],{},[224,988,989],{},[142,990,869],{},[224,992,993],{},"Code with behavior the model does not describe yet",[206,995,996,1000],{},[224,997,998],{},[142,999,903],{},[224,1001,1002],{},"Code whose behavior could not be established",[135,1004,1005,1006,1009,1010,1013,1014,1020,1021,1025],{},"Every field is required, and every entry names its code: a unique one-line\n",[142,1007,1008],{},"description"," of the code area and its ",[142,1011,1012],{},"paths",", usually folders.\n",[148,1015,1017],{"href":1016},".\u002Fskill-pdd-map",[142,1018,1019],{},"pdd-map"," writes coverage when it maps\na repository. A model with no code yet — a Blueprint, or one you design first\nwith ",[148,1022,1023],{"href":705},[142,1024,708],{}," — has empty\ncoverage until something maps its code. Known gaps never relax any other\ncheck.",[159,1027,1029],{"id":1028},"what-lint-checks","What lint checks",[135,1031,1032],{},"All of these are errors:",[526,1034,1035,1069,1080,1087],{},[529,1036,1037,1039,1040,1043,1044,620,1046,1049,1050,620,1053,1056,1057,1060,1061,1064,1065,1068],{},[142,1038,737],{}," (or ",[142,1041,1042],{},"product\u002Fproduct.md","), ",[142,1045,731],{},[142,1047,1048],{},"config.yaml",",\n",[142,1051,1052],{},"taxonomies.yaml",[142,1054,1055],{},"README.md","\nand a ",[142,1058,1059],{},".gitignore"," ignoring ",[142,1062,1063],{},"build\u002F"," and ",[142,1066,1067],{},"cache\u002F"," exist; there is at least one Interface and one Capability.",[529,1070,1071,1072,1064,1074,1076,1077,564],{},"A resource has one shape: ",[142,1073,537],{},[142,1075,541],{}," never both, and an\nexpanded folder has its ",[142,1078,1079],{},"\u003Ctype>.md",[529,1081,1082,1083,1086],{},"No unknown frontmatter keys, and each recognized ",[142,1084,1085],{},"##"," section at most once.",[529,1088,1089,1091,1092,1095,1096,1098,1099,1064,1101,1103,1104,564],{},[142,1090,731],{}," has every field, unique descriptions, and only ",[142,1093,1094],{},"# Coverage"," in\nits body; every entry names at least one path, and ",[142,1097,760],{}," is set whenever\nthere is an entry. With no entry, ",[142,1100,760],{},[142,1102,773],{}," are both ",[142,1105,966],{},[135,1107,1108],{},"Warnings:",[526,1110,1111,1114],{},[529,1112,1113],{},"An expanded folder with nothing in it yet.",[529,1115,1116],{},"A behavioral id that reads as a noun phrase, a cross-cutting id that opens\nwith a verb, or a noun the model already declares more fully.",[1118,1119,1120],"style",{},"html pre.shiki code .sjkiA, html code.shiki .sjkiA{--shiki-light:#362B1D;--shiki-default:#362B1D;--shiki-dark:#89DDFF}html pre.shiki code .sg1QC, html code.shiki .sg1QC{--shiki-light:#00585F;--shiki-default:#00585F;--shiki-dark:#F07178}html pre.shiki code .s9fN-, html code.shiki .s9fN-{--shiki-light:#6E3500;--shiki-default:#6E3500;--shiki-dark:#C3E88D}html pre.shiki code .sKwZ8, html code.shiki .sKwZ8{--shiki-light:#362B1D;--shiki-light-font-weight:bold;--shiki-default:#362B1D;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:inherit}html pre.shiki code .sBbkF, html code.shiki .sBbkF{--shiki-light:#00585F;--shiki-light-font-weight:bold;--shiki-default:#00585F;--shiki-default-font-weight:bold;--shiki-dark:#FFCB6B;--shiki-dark-font-weight:inherit}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":177,"searchDepth":756,"depth":756,"links":1122},[1123,1124,1125,1126,1129,1130,1131],{"id":161,"depth":756,"text":162},{"id":197,"depth":756,"text":198},{"id":375,"depth":756,"text":376},{"id":523,"depth":756,"text":524,"children":1127},[1128],{"id":594,"depth":770,"text":595},{"id":691,"depth":756,"text":692},{"id":721,"depth":756,"text":722},{"id":1028,"depth":756,"text":1029},{"section":1133,"terms":1134},"open-source",[1135,1137,1140,1142],{"term":29,"anchor":161,"definition":1136},"The product-model\u002F folder: one product described in Markdown files, tracked in Git, and free to point at the repository's code.",{"term":1138,"anchor":523,"definition":1139},"Intent","Why a resource exists and which outcome it protects, never a restatement of what it does.",{"term":722,"anchor":721,"definition":1141},"Which of the repository's code the model accounts for, what it leaves out as not product behavior, and known gaps.",{"term":211,"anchor":197,"definition":1143},"A kind of resource, such as Entity or Capability, decided by where its file sits in the Product Model.",{"title":27,"description":28},"docs\u002Fproduct-model","H1lRMYfZ6x9YSCsKYiz2ol6JVYQzqB726-nWsllcRoo",1791840531131]