{
    "model": {
        "rank": 1885,
        "code": "thing-q80006",
        "model_id": "vr.tr.computer-programming",
        "name": "computer programming",
        "purpose": "Let an agent help people learn and practise programming, apply secure and maintainable techniques, choose tools, and recognise poor practices.",
        "family": "Thing Registry",
        "category": "Activities and processes",
        "status": "research-draft",
        "kind": "thing",
        "plane": "ACT",
        "domain": "ACT.ACT",
        "industry": "",
        "version": "",
        "url": "/models/thing/q80006/",
        "tier": 2,
        "score": 123,
        "payload": {
            "layer": "wikidata",
            "aliases": [
                "cargo cult programming",
                "generic programming",
                "reflective programming",
                "Programming by Voice",
                "serial computation",
                "prompt engineering",
                "polyglot programming",
                "graphical programming",
                "event-driven programming",
                "server-side scripting",
                "graphics programming",
                "microcontroller programming",
                "concurrent computing",
                "output encoding mechanism",
                "code patching",
                "microprogramming",
                "GQM",
                "HiLog",
                "Creative coding",
                "micro-programming",
                "systems programming",
                "object-orientation",
                "structured programming",
                "programming",
                "asynchrony",
                "evolutionary programming",
                "imperative programming",
                "computer programming, consultancy and related activities",
                "agile software development",
                "aspect-oriented programming",
                "tacit programming",
                "method overriding",
                "quantum programming",
                "multi-paradigm programming",
                "copy-and-paste programming",
                "stack-oriented programming",
                "declarative programming",
                "social coding",
                "component-based software engineering",
                "modular programming"
            ],
            "aliasCount": 76,
            "merged": 77,
            "knownIn": 123,
            "facets": null,
            "markers": [],
            "lexicalClass": "",
            "senseRank": null,
            "alsoRegisteredAs": null,
            "source": {
                "dataset": "wikidata",
                "item": "Q80006",
                "url": "https://www.wikidata.org/wiki/Q80006",
                "license": "CC0 1.0"
            }
        },
        "research": {
            "vercy": "1.0-draft",
            "publication": {
                "status": "research-draft",
                "adjudicationStatus": "unreviewed",
                "publishableCanonical": false,
                "generatedAt": "2026-09-11T14:17:01Z",
                "providers": [
                    "Claude"
                ],
                "breadth": "written by Claude from model knowledge without web access - no source was read, every claim is a lead to verify",
                "pass": 2,
                "wave": 1,
                "engine": "claude"
            },
            "metaModel": {
                "id": "THING-Q80006",
                "registryId": "vr.tr.computer-programming",
                "name": "computer programming",
                "version": "0.2.0-wave.1",
                "entryKind": "thing",
                "family": "Thing Registry",
                "domain": [
                    "ACT.ACT"
                ],
                "status": "research-draft"
            },
            "canonicalUrl": "https://ver.cy/models/thing/q80006/",
            "model": {
                "registry_id": "vr.tr.computer-programming",
                "name": "computer programming",
                "purpose": "Let an agent help people learn and practise programming, apply secure and maintainable techniques, choose tools, and recognise poor practices.",
                "definition": "The practice of designing, writing, testing, debugging and maintaining instructions that computers execute, using programming languages and tools, across paradigms such as procedural, object-oriented, functional and generic programming, and increasingly with AI assistance and prompt engineering.",
                "what_it_is_for": "Building software and automating tasks.",
                "affordances": [
                    "learn programming basics",
                    "debug and test code",
                    "apply secure coding practices",
                    "choose tools and paradigms"
                ],
                "distinguishing_features": [
                    "Writes instructions for computers",
                    "Uses languages and tools",
                    "Requires testing",
                    "Collaborative and versioned"
                ],
                "appearance": "Code in editors, version control repositories and running programs.",
                "visual_identification": [
                    "Source code in text files",
                    "Version control and tests",
                    "Configuration is not always programming"
                ],
                "physical_properties": [],
                "families_and_kinds": [
                    "procedural and object-oriented programming",
                    "functional and generic programming",
                    "systems and embedded programming",
                    "web and data programming",
                    "AI-assisted programming"
                ],
                "related_models": [
                    {
                        "relation": "is a kind of",
                        "target": "skill and activity",
                        "why": "category"
                    },
                    {
                        "relation": "uses",
                        "target": "programming language",
                        "why": "tool"
                    },
                    {
                        "relation": "produces",
                        "target": "software",
                        "why": "output"
                    },
                    {
                        "relation": "uses",
                        "target": "database",
                        "why": "data storage"
                    }
                ],
                "identifiers": [],
                "standards_and_regulation": [
                    "Secure development guidance such as OWASP",
                    "Software licensing",
                    "Safety standards for critical software"
                ],
                "failure_modes_and_hazards": [
                    "Security vulnerabilities",
                    "Cargo cult practices",
                    "Licence violations in copied code"
                ],
                "in_scope": [],
                "out_of_scope": [],
                "characteristics": []
            },
            "sources": [],
            "structure": {
                "bundles": [
                    {
                        "id": "learn",
                        "name": "Learn",
                        "description": "Getting started.",
                        "rationale": "Practice builds skill.",
                        "layers": [
                            {
                                "id": "start",
                                "name": "Start",
                                "description": "First steps.",
                                "findings": [
                                    {
                                        "id": "start-finding",
                                        "name": "Start",
                                        "description": "First steps.",
                                        "questions": [
                                            {
                                                "text": "Which language and resources suit a beginner with this goal?",
                                                "kind": "action"
                                            },
                                            {
                                                "text": "What small project would help?",
                                                "kind": "action"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "concepts",
                                "name": "Concepts",
                                "description": "Core concepts.",
                                "findings": [
                                    {
                                        "id": "concepts-finding",
                                        "name": "Concepts",
                                        "description": "Core concepts.",
                                        "questions": [
                                            {
                                                "text": "How do variables, loops, functions and data structures work?",
                                                "kind": "definition"
                                            },
                                            {
                                                "text": "Which example illustrates this concept?",
                                                "kind": "action"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "practice",
                        "name": "Practice",
                        "description": "Quality.",
                        "rationale": "Quality needs discipline.",
                        "layers": [
                            {
                                "id": "debug",
                                "name": "Debug",
                                "description": "Debugging.",
                                "findings": [
                                    {
                                        "id": "debug-finding",
                                        "name": "Debug",
                                        "description": "Debugging.",
                                        "questions": [
                                            {
                                                "text": "How can this bug be isolated and reproduced?",
                                                "kind": "action"
                                            },
                                            {
                                                "text": "Which tools help?",
                                                "kind": "provenance"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "testing",
                                "name": "Testing",
                                "description": "Tests.",
                                "findings": [
                                    {
                                        "id": "testing-finding",
                                        "name": "Testing",
                                        "description": "Testing.",
                                        "questions": [
                                            {
                                                "text": "Which tests would catch this problem in future?",
                                                "kind": "action"
                                            },
                                            {
                                                "text": "How is coverage measured?",
                                                "kind": "measurement"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "security",
                        "name": "Security",
                        "description": "Secure coding.",
                        "rationale": "Security matters.",
                        "layers": [
                            {
                                "id": "secure",
                                "name": "Secure",
                                "description": "Vulnerabilities.",
                                "findings": [
                                    {
                                        "id": "secure-finding",
                                        "name": "Secure",
                                        "description": "Secure coding.",
                                        "questions": [
                                            {
                                                "text": "Does this code have common vulnerabilities such as injection or unsafe input handling?",
                                                "kind": "boundary"
                                            },
                                            {
                                                "text": "Which guidance explains the fix?",
                                                "kind": "provenance"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "misuse",
                                "name": "Misuse",
                                "description": "Harmful code.",
                                "findings": [
                                    {
                                        "id": "misuse-finding",
                                        "name": "Misuse",
                                        "description": "Harmful code limits.",
                                        "questions": [
                                            {
                                                "text": "Does the request seek malware or unauthorised access tools?",
                                                "kind": "boundary"
                                            },
                                            {
                                                "text": "How should the agent decline?",
                                                "kind": "action"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "work",
                        "name": "Work",
                        "description": "Collaboration.",
                        "rationale": "Teams share code.",
                        "layers": [
                            {
                                "id": "version",
                                "name": "Version control",
                                "description": "Collaboration.",
                                "findings": [
                                    {
                                        "id": "version-finding",
                                        "name": "Version control",
                                        "description": "Version control.",
                                        "questions": [
                                            {
                                                "text": "How should version control and code review be used here?",
                                                "kind": "action"
                                            },
                                            {
                                                "text": "Which branching model suits the team?",
                                                "kind": "provenance"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "licence",
                                "name": "Licence",
                                "description": "Using others code.",
                                "findings": [
                                    {
                                        "id": "licence-finding",
                                        "name": "Licence",
                                        "description": "Licensing.",
                                        "questions": [
                                            {
                                                "text": "Under what licence can this code be reused?",
                                                "kind": "provenance"
                                            },
                                            {
                                                "text": "What attribution is required?",
                                                "kind": "provenance"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            },
            "openQuestions": [
                "Should paradigms be separate entries?",
                "How should learning resources be linked?",
                "How should AI-assisted practices be described?"
            ],
            "statistics": {
                "bundles": 4,
                "layers": 8,
                "findings": 8,
                "questions": 16
            }
        },
        "draft": {
            "generator": "vr.draft.v3",
            "status": "draft-generated",
            "researched": false,
            "archetype": "abstract concept",
            "method": "Written from the archetype playbook - what this kind of thing needs beyond identity and provenance - and from the structure that recurred across 6,333 models already researched by two engines. Applied to this entry by rule. No source was read for this thing and no claim here is researched. This entry carries no facets of its own, so they were inferred from its domain - a guess about a whole domain applied to one thing.",
            "facetsInferred": true,
            "nextPass": "A researcher replaces this draft with a sourced specification. Treat every sentence below as a proposal to argue with.",
            "purpose": "Give an agent a durable, checkable way to recognise a computer programming, record what state it is in, and decide what may be done with it.",
            "whatItIs": "Let an agent help people learn and practise programming, apply secure and maintainable techniques, choose tools, and recognise poor practices.",
            "characteristics": {
                "substance": "activity",
                "origin": "conceptual",
                "agency": "inert"
            },
            "whatYouCanDoWithIt": [
                "observed and measured"
            ],
            "distinguishingFeatures": [
                "Names folded into this entry, which a task may need to split apart again: cargo cult programming, generic programming, reflective programming, Programming by Voice, serial computation, prompt engineering, polyglot programming, graphical programming, event-driven programming, server-side scripting, graphics programming, microcontroller programming.",
                "77 finer distinctions are held as aliases rather than separate entries, because telling them apart needs a task that asks for it.",
                "Described in 123 Wikipedia languages, which is a measure of how widely the thing is known, not of how important it is."
            ],
            "openQuestionsForResearch": [
                "Which of the bundles below does a real task actually need, and which are ceremony?",
                "What does this thing have that the facets do not capture at all?",
                "Which neighbouring kind is most often confused with a computer programming, and on what evidence are they told apart?"
            ],
            "whatItIsMadeOf": "something that happens over time",
            "physicalCharacter": [
                "Does nothing on its own; everything it does, something else did to it.",
                "These come from the domain this entry sits in rather than from the entry itself, so treat them as a first guess about the whole domain applied to one thing."
            ],
            "whatCanBeDoneWithIt": [
                "observe it, measure it, record its state"
            ],
            "howItIsRecognised": [
                "Nothing to see. What is recognised is an instance of it, and which instances count is exactly what is argued about."
            ],
            "relatedModels": [
                {
                    "relation": "covers",
                    "note": "Finer kinds folded into this entry because telling them apart needs a task that asks for it. Each is a model waiting to be split out when one does.",
                    "targets": [
                        "cargo cult programming",
                        "generic programming",
                        "reflective programming",
                        "Programming by Voice",
                        "serial computation",
                        "prompt engineering",
                        "polyglot programming",
                        "graphical programming",
                        "event-driven programming",
                        "server-side scripting",
                        "graphics programming",
                        "microcontroller programming"
                    ]
                }
            ],
            "standing": "Described in 123 Wikipedia languages, which measures how widely it is written about rather than how important or how common it is. 77 finer distinctions are held inside this entry as names rather than as separate models.",
            "structure": {
                "bundles": [
                    {
                        "id": "identity-and-classification",
                        "name": "Identity, naming and classification",
                        "description": "How an agent tells one computer programming from another, and a computer programming from things that resemble it.",
                        "rationale": "Recognition comes before every other claim. Without stable identity nothing else in the model can be trusted to be about the same thing twice.",
                        "layers": [
                            {
                                "id": "naming-and-identifiers",
                                "name": "Names and identifiers",
                                "description": "The names this thing goes by and the identifiers that survive translation and time.",
                                "findings": [
                                    {
                                        "id": "preferred-name-and-aliases",
                                        "name": "Preferred name, aliases and local names",
                                        "description": "Which name to use, which names mean the same thing, and which merely sound similar.",
                                        "questions": [
                                            {
                                                "id": "preferred-name-and-aliases-q01",
                                                "text": "What identifies and describes the name of a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "preferred-name-and-aliases-q02",
                                                "text": "Who or what asserted this about the name of a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "preferred-name-and-aliases-q03",
                                                "text": "What may an agent decide or do once the name of a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    },
                                    {
                                        "id": "stable-identifiers",
                                        "name": "Stable identifiers and external keys",
                                        "description": "Identifiers that keep pointing at this kind of thing across systems and languages.",
                                        "questions": [
                                            {
                                                "id": "stable-identifiers-q01",
                                                "text": "What identifies and describes an identifier for a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "stable-identifiers-q02",
                                                "text": "Who or what asserted this about an identifier for a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "stable-identifiers-q03",
                                                "text": "What may an agent decide or do once an identifier for a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "classification-and-granularity",
                                "name": "Classification and granularity",
                                "description": "Where a computer programming sits among kinds, and how finely a task needs to cut it.",
                                "findings": [
                                    {
                                        "id": "kind-and-parents",
                                        "name": "Kind, parents and neighbouring kinds",
                                        "description": "The classes this thing belongs to and the ones it is next to.",
                                        "questions": [
                                            {
                                                "id": "kind-and-parents-q01",
                                                "text": "What identifies and describes the kind of a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "kind-and-parents-q02",
                                                "text": "Who or what asserted this about the kind of a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "kind-and-parents-q03",
                                                "text": "What may an agent decide or do once the kind of a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    },
                                    {
                                        "id": "distinguishing-features",
                                        "name": "Distinguishing features",
                                        "description": "What separates a computer programming from the things most often confused with it.",
                                        "questions": [
                                            {
                                                "id": "distinguishing-features-q01",
                                                "text": "What identifies and describes what distinguishes a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "distinguishing-features-q02",
                                                "text": "Who or what asserted this about what distinguishes a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "distinguishing-features-q03",
                                                "text": "What may an agent decide or do once what distinguishes a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "state-and-lifecycle",
                        "name": "State and lifecycle",
                        "description": "The states a computer programming passes through and the events that move it between them.",
                        "rationale": "Most decisions about a thing depend on what state it is in now, which is a claim with a time on it, not a property.",
                        "layers": [
                            {
                                "id": "lifecycle-stages",
                                "name": "Lifecycle stages",
                                "description": "From coming into existence to ceasing to be one of these.",
                                "findings": [
                                    {
                                        "id": "stages-and-transitions",
                                        "name": "Stages and transitions",
                                        "description": "The stages worth naming and what moves a computer programming between them.",
                                        "questions": [
                                            {
                                                "id": "stages-and-transitions-q01",
                                                "text": "What identifies and describes the lifecycle of a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "stages-and-transitions-q02",
                                                "text": "Who or what asserted this about the lifecycle of a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "stages-and-transitions-q03",
                                                "text": "What may an agent decide or do once the lifecycle of a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "observations-and-status",
                                "name": "Observations and current status",
                                "description": "What is observed about a computer programming, how often and by whom.",
                                "findings": [
                                    {
                                        "id": "observation-record",
                                        "name": "Observation record",
                                        "description": "How an observation of a computer programming is recorded so that it can be superseded rather than overwritten.",
                                        "questions": [
                                            {
                                                "id": "observation-record-q01",
                                                "text": "What identifies and describes an observation of a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "observation-record-q02",
                                                "text": "Who or what asserted this about an observation of a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "observation-record-q03",
                                                "text": "What may an agent decide or do once an observation of a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "process-and-outcome",
                        "name": "Process, inputs and outcome",
                        "description": "How a computer programming proceeds, what it needs and what it leaves behind.",
                        "rationale": "An activity is known by its steps and its results, and both have to be recordable while it is still running.",
                        "layers": [
                            {
                                "id": "steps-and-sequence",
                                "name": "Steps and sequence",
                                "description": "The steps of a computer programming, their order and what may run in parallel.",
                                "findings": [
                                    {
                                        "id": "steps-and-preconditions",
                                        "name": "Steps, preconditions and completion",
                                        "description": "What has to be true before each step of a computer programming and what marks it done.",
                                        "questions": [
                                            {
                                                "id": "steps-and-preconditions-q01",
                                                "text": "What identifies and describes a step of a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "steps-and-preconditions-q02",
                                                "text": "Who or what asserted this about a step of a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "steps-and-preconditions-q03",
                                                "text": "What may an agent decide or do once a step of a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "inputs-and-results",
                                "name": "Inputs, resources and results",
                                "description": "What a computer programming consumes and what it produces.",
                                "findings": [
                                    {
                                        "id": "inputs-and-outputs",
                                        "name": "Inputs, outputs and side effects",
                                        "description": "The resources a computer programming takes and the results it leaves, wanted or not.",
                                        "questions": [
                                            {
                                                "id": "inputs-and-outputs-q01",
                                                "text": "What identifies and describes the inputs and results of a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "inputs-and-outputs-q02",
                                                "text": "Who or what asserted this about the inputs and results of a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "inputs-and-outputs-q03",
                                                "text": "What may an agent decide or do once the inputs and results of a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "definitions-in-contest",
                        "name": "Definitions and who holds them",
                        "description": "What computer programming is taken to mean, and by whom.",
                        "rationale": "When a field disagrees about a concept, the disagreement is the content. A model that picks one definition silently destroys the information.",
                        "layers": [
                            {
                                "id": "competing-definitions",
                                "name": "Competing definitions",
                                "description": "The main readings and the traditions behind them.",
                                "findings": [
                                    {
                                        "id": "definition-map",
                                        "name": "Definitions and their holders",
                                        "description": "Each definition with the school or body that holds it.",
                                        "questions": [
                                            {
                                                "id": "definition-map-q01",
                                                "text": "Which definitions of computer programming are in use, and which tradition or body holds each?",
                                                "kind": "definition"
                                            },
                                            {
                                                "id": "definition-map-q02",
                                                "text": "What turns on the difference between them in practice?",
                                                "kind": "boundary"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "operationalisation",
                                "name": "Operationalisation",
                                "description": "How it is measured or applied when it has to be.",
                                "findings": [
                                    {
                                        "id": "operational-record",
                                        "name": "Measures and proxies",
                                        "description": "Instruments and indicators used to stand in for it.",
                                        "questions": [
                                            {
                                                "id": "operational-record-q01",
                                                "text": "How is computer programming operationalised or measured in practice, and by what instrument?",
                                                "kind": "measurement"
                                            },
                                            {
                                                "id": "operational-record-q02",
                                                "text": "What does that operationalisation leave out, and when does that matter?",
                                                "kind": "boundary"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "instances-and-use",
                        "name": "Instances, use and consequence",
                        "description": "What counts as an instance of computer programming and what follows from calling something that.",
                        "rationale": "Applying a concept is an act with consequences, so a model must say what the label licenses and what it does not.",
                        "layers": [
                            {
                                "id": "instances",
                                "name": "What counts as an instance",
                                "description": "Clear cases, borderline cases and non-cases.",
                                "findings": [
                                    {
                                        "id": "instance-tests",
                                        "name": "Tests for an instance",
                                        "description": "What would settle whether something falls under it.",
                                        "questions": [
                                            {
                                                "id": "instance-tests-q01",
                                                "text": "What would settle whether something is an instance of computer programming?",
                                                "kind": "boundary"
                                            },
                                            {
                                                "id": "instance-tests-q02",
                                                "text": "Which borderline cases are argued about, and on what grounds?",
                                                "kind": "definition"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "consequence",
                                "name": "Consequence of application",
                                "description": "Rights, duties or decisions that follow from the label.",
                                "findings": [
                                    {
                                        "id": "consequence-record",
                                        "name": "What the label licenses",
                                        "description": "What an agent may do once something is classified this way.",
                                        "questions": [
                                            {
                                                "id": "consequence-record-q01",
                                                "text": "What follows practically once something is treated as computer programming?",
                                                "kind": "action"
                                            },
                                            {
                                                "id": "consequence-record-q02",
                                                "text": "What must an agent not infer from the label alone?",
                                                "kind": "action"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "id": "provenance-and-evidence",
                        "name": "Provenance, evidence and time",
                        "description": "Where every claim about a computer programming came from and when it held.",
                        "rationale": "A claim without a source and a time cannot be superseded, only overwritten, and an agent that overwrites loses the ability to explain itself.",
                        "layers": [
                            {
                                "id": "source-and-authority",
                                "name": "Source and authority",
                                "description": "Who said it, on what evidence, and how strongly.",
                                "findings": [
                                    {
                                        "id": "claim-provenance",
                                        "name": "Claim provenance and confidence",
                                        "description": "The authority behind each claim about a computer programming and how confident it is.",
                                        "questions": [
                                            {
                                                "id": "claim-provenance-q01",
                                                "text": "What identifies and describes a claim about a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "claim-provenance-q02",
                                                "text": "Who or what asserted this about a claim about a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "claim-provenance-q03",
                                                "text": "What may an agent decide or do once a claim about a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "id": "time-and-versions",
                                "name": "Time, versions and supersession",
                                "description": "When a claim was true, when it was learnt, and what replaced it.",
                                "findings": [
                                    {
                                        "id": "validity-and-supersession",
                                        "name": "Validity period and supersession",
                                        "description": "How an old claim about a computer programming is retired without being erased.",
                                        "questions": [
                                            {
                                                "id": "validity-and-supersession-q01",
                                                "text": "What identifies and describes the validity of a claim about a computer programming, and in what units or vocabulary?",
                                                "kind": "definition",
                                                "answer_data": [
                                                    "identifiers",
                                                    "types and classes",
                                                    "values with units",
                                                    "explicit unknowns"
                                                ]
                                            },
                                            {
                                                "id": "validity-and-supersession-q02",
                                                "text": "Who or what asserted this about the validity of a claim about a computer programming, by which method, and when was it true?",
                                                "kind": "provenance",
                                                "answer_data": [
                                                    "authority",
                                                    "method",
                                                    "evidence",
                                                    "event time",
                                                    "knowledge time"
                                                ]
                                            },
                                            {
                                                "id": "validity-and-supersession-q03",
                                                "text": "What may an agent decide or do once the validity of a claim about a computer programming is known, and what must it refuse?",
                                                "kind": "action",
                                                "answer_data": [
                                                    "permitted actions",
                                                    "preconditions",
                                                    "refusals",
                                                    "escalation"
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            },
            "statistics": {
                "bundles": 6,
                "layers": 12,
                "findings": 14,
                "questions": 38
            }
        }
    }
}