[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7AGQ2ZKWGCF18PZSC01RTMP":3,"skill-same:01M7AGQ2ZKWGCF18PZSC01RTMP":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7AGQ2ZKWGCF18PZSC01RTMP","0.3.6-understand-constraint",null,"[0.3.6] An atomic equational condition of the form type_A = type_B produced during constraint_generation, awaiting res","sancovp\u002Fdark-factory-live","sancovp","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F147458096?v=4","01M74F2EFE4Q0KF1Y5AY27HVNB","Isaac Wostrel-Rubin","01M7AC3EB8VZXS1SKHQW1EZ4N1",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fkbworld\u002Fstate\u002Fmodules\u002Ftype_systems_for_working_programmers\u002Fskills\u002F0-3-6-understand-constraint\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: 0.3.6-understand-constraint\ndescription: \"[0.3.6] An atomic equational condition of the form type_A = type_B produced during constraint_generation, awaiting res\"\n---\n\n# understand-constraint\n\n**CALL NUMBER:** `deep_type_inference.constraint : type_systems_for_working_programmers(7)`\n**DEFINITION:** An atomic equational condition of the form type_A = type_B produced during constraint_generation, awaiting resolution by unification.\n\nInvoke this skill to understand `constraint` down to its primitives. The RELATIVE ROOT below is the least-fixed-point closure of everything it bundles from — the full import cone, grouped by the lib each prim comes from. Projected from a prover-typed KB (MAP\u002FSWI-Prolog consistency gate): every reference below resolves.\n\n## THE RELATIVE ROOT (the import cone, by lib)\n\n### from `deep_type_inference`\n- **unification** (d1): The algorithm that, given two monotypes, computes a substitution that makes them syntactically identical, or reports a type_error if impossible.\n- **most_general_unifier** (d2): Most general substitution that satisfies a set of type constraints; unique up to renaming of variables.\n- **occurs_check** (d2): The guard inside unification that rejects a substitution {α ↦ t} when α occurs free inside t, preventing the construction of infinite recursive types.\n- **substitution** (d3): A total function from type_variable to monotype; a mapping recording how each type_variable was solved during constraint_solving.\n- **constraint_solving** (d3): The phase that processes the generated constraints via unification, producing the principal substitution.\n- **pruning** (d4): The substitution-composition step that replaces a type_variable with its expanded form after unification, eliminating aliasing to type_variables.\n- **principal_pair** (d4): Pair consisting of a type scheme and its originating type environment; the full inference result.\n- **free_type_variables** (d5): Set of type variables occurring in a type that are not quantified; relevant to generalization.\n- **constraint_generation** (d7): The phase that walks the syntax tree of an expression under a type_environment, producing a set of constraints paired with an accumulating type_environment for subterms.\n- **type_environment** (d7): A finite mapping from term_variable names to type_schemes, providing the typing assumptions available at a given point during constraint_generation.\n\n### from `type_systems_for_working_programmers`\n- **type_error** (d2): Violation of type constraints detected by the type system (static or runtime).\n- **type_variable** (d4): Placeholder symbol ranging over types, awaiting instantiation (alpha in Hindley-Milner).\n- **hindley_milner** (d5): Classical type inference algorithm supporting parametric polymorphism and let-generalization.\n- **predicative_polymorphism** (d6): Polymorphism restricted to monomorphic types inside quantifiers (ML\u002FHindley-Milner).\n- **type_inference** (d6): Compiler or runtime deducing types from context without explicit annotation.\n- **principal_type** (d7): Most general type capturing all valid typings for an expression.\n- **type_annotation** (d7): Explicit syntactic marker associating a name or expression with a type (e.g. x: int).\n\n## CONSUMERS (what needs this)\n`constraint_generation`, `ct_constraint`, `type_annotation`, `type_variable`\n\n---\n*Projected from the `type systems for working programmers` KB (242 concepts \u002F 186 relations) — consistency-typed by MAP; the facet list after the colon IS the cross-lib dependency web.*\n\n_(leaf — this is an actual skill.)_\n","# understand-constraint\n\n**CALL NUMBER:** `deep_type_inference.constraint : type_systems_for_working_programmers(7)`\n**DEFINITION:** An atomic equational condition of the form type_A = type_B produced during constraint_generation, awaiting resolution by unification.\n\nInvoke this skill to understand `constraint` down to its primitives. The RELATIVE ROOT below is the least-fixed-point closure of everything it bundles from — the full import cone, grouped by the lib each prim comes from. Projected from a prover-typed KB (MAP\u002FSWI-Prolog consistency gate): every reference below resolves.\n\n## THE RELATIVE ROOT (the import cone, by lib)\n\n### from `deep_type_inference`\n- **unification** (d1): The algorithm that, given two monotypes, computes a substitution that makes them syntactically identical, or reports a type_error if impossible.\n- **most_general_unifier** (d2): Most general substitution that satisfies a set of type constraints; unique up to renaming of variables.\n- **occurs_check** (d2): The guard inside unification that rejects a substitution {α ↦ t} when α occurs free inside t, preventing the construction of infinite recursive types.\n- **substitution** (d3): A total function from type_variable to monotype; a mapping recording how each type_variable was solved during constraint_solving.\n- **constraint_solving** (d3): The phase that processes the generated constraints via unification, producing the principal substitution.\n- **pruning** (d4): The substitution-composition step that replaces a type_variable with its expanded form after unification, eliminating aliasing to type_variables.\n- **principal_pair** (d4): Pair consisting of a type scheme and its originating type environment; the full inference result.\n- **free_type_variables** (d5): Set of type variables occurring in a type that are not quantified; relevant to generalization.\n- **constraint_generation** (d7): The phase that walks the syntax tree of an expression under a type_environment, producing a set of constraints paired with an accumulating type_environment for subterms.\n- **type_environment** (d7): A finite mapping from term_variable names to type_schemes, providing the typing assumptions available at a given point during constraint_generation.\n\n### from `type_systems_for_working_programmers`\n- **type_error** (d2): Violation of type constraints detected by the type system (static or runtime).\n- **type_variable** (d4): Placeholder symbol ranging over types, awaiting instantiation (alpha in Hindley-Milner).\n- **hindley_milner** (d5): Classical type inference algorithm supporting parametric polymorphism and let-generalization.\n- **predicative_polymorphism** (d6): Polymorphism restricted to monomorphic types inside quantifiers (ML\u002FHindley-Milner).\n- **type_inference** (d6): Compiler or runtime deducing types from context without explicit annotation.\n- **principal_type** (d7): Most general type capturing all valid typings for an expression.\n- **type_annotation** (d7): Explicit syntactic marker associating a name or expression with a type (e.g. x: int).\n\n## CONSUMERS (what needs this)\n`constraint_generation`, `ct_constraint`, `type_annotation`, `type_variable`\n\n---\n*Projected from the `type systems for working programmers` KB (242 concepts \u002F 186 relations) — consistency-typed by MAP; the facet list after the colon IS the cross-lib dependency web.*\n\n_(leaf — this is an actual skill.)_\n",{"name":5,"description":7},"main","dfed66814f223a9f42bec375a3c59d74eefdcad5","kbworld\u002Fstate\u002Fmodules\u002Ftype_systems_for_working_programmers\u002Fskills\u002F0-3-6-understand-constraint","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live","https:\u002F\u002Fgithub.com\u002Fsancovp","https:\u002F\u002Fisaacwr.carrd.co\u002F","AKA Olivus Victory-Promise\r\n\r\nAI Agents, Tools, and Infrastructure","2026-10-09 02:22:46",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add sancovp\u002Fdark-factory-live --skill 0.3.6-understand-constraint",{"tool":38,"command":39},"bunx","bunx skills add sancovp\u002Fdark-factory-live --skill 0.3.6-understand-constraint",{"tool":41,"command":42},"pnpm","pnpm dlx skills add sancovp\u002Fdark-factory-live --skill 0.3.6-understand-constraint","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fkbworld\u002Fstate\u002Fmodules\u002Ftype_systems_for_working_programmers\u002Fskills\u002F0-3-6-understand-constraint\u002FSKILL.md",true,[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M7AGYB2CPCQYJP631CH18A1A","quests","The quest board — accept quests, craft skills to fulfill them, earn gold rewards.","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fworld\u002Fagents\u002Fagent_002\u002F.claude\u002Fskills\u002Fthings\u002Fquests\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7AGXYVW23T3X4APFAV3H4ZY","metrics","Check your profitability and trading performance — gold earned, spent, net profit, trade history.","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fworld\u002Fagents\u002Fagent_002\u002F.claude\u002Fskills\u002Fthings\u002Fmetrics\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7AGXWC0C1W7PZK5YXQW0NQM","things","Flat search across the game — find quests, knowledge domains, agents, trade listings, memories.","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fworld\u002Fagents\u002Fagent_002\u002F.claude\u002Fskills\u002Fthings\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7AGXT9SX50REN4K7ZGE08JT","test-skill","Test a crafted skill by running it through a fresh Claude instance. Use before posting to trade or submitting for quests.","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fworld\u002Fagents\u002Fagent_002\u002F.claude\u002Fskills\u002Ftest_skill\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7AGXRA67MFHJJNDEVX6PFKR","remember","Your zettelkasten — persistent memory that survives across seasons. Record observations, strategies, and craft insights.","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fworld\u002Fagents\u002Fagent_002\u002F.claude\u002Fskills\u002Fremember\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7AGXNND02SYFXB1JV9YRPAN","skill-types","The type system — Template, Lens, Prosthesis, Towering, Combiner, Persona, Recipe. Learn to type skills, chain them, and write Recipes.","https:\u002F\u002Fgithub.com\u002Fsancovp\u002Fdark-factory-live\u002Fblob\u002Fmain\u002Fworld\u002Fagents\u002Fagent_002\u002F.claude\u002Fskills\u002Fplaces\u002Fskill_types\u002FSKILL.md",[],[]]