rhachet-roles-ehmpathy 1.13.2 → 1.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/logic/roles/architect/.briefs/criteria.given_when_then.[seed].v3.md +87 -0
- package/dist/logic/roles/architect/.briefs/practices/prefer.env_access.prep_over_dev.md +12 -0
- package/dist/logic/roles/architect/.briefs/ubiqlang.ambiguous-from-overload.md +1 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog000.overview.and.premise.md +115 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.coordinates.spherical.md +69 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.metaphor.cauliflorous.md +44 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.metaphor.galactic_spacetravel.[article].md +42 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.metaphor.galactic_spacetravel.[lesson].md +60 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.structs.catalog.md +51 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.structs.treestruct.md +85 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog021.structs.vector.md +112 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.definition.md +115 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct._.md +112 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.coords.1.spherical.md +80 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.coords.2.abstractive.md +59 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.coords.3.descriptive.md +64 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.1.perspectives.md +88 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.2.universal.md +82 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.3.relative.md +106 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.4.fractal.md +83 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog151.concept.treestruct.gravity.md +89 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p1.definition.md +231 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p1.examples.cont.md +82 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p2.acuity.md +134 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p2.breadth.md +151 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p2.depth.md +147 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.fabric.md +96 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.mode.md +68 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.rythm.md +56 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.usecases.md +76 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives._.md +155 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.acuity.md +94 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.breadth.md +114 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.breadth.vary.md +105 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.depth.md +132 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.2.motion.composites._.md +106 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.2.motion.composites.grammar.md +105 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.._.md +209 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.1.persp.as.berries.md +168 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.1.persp.as.vectors.md +74 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.1.persp.has.precision.tunable.md +80 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.1.primitives.rough._.md +99 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.1.primitives.rough.interrogative.md +108 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.1.primitives.rough.why.[article].md +55 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.2.composite.smooth._.md +83 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.2.composite.smooth.examples.md +101 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives._.md +134 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives.recall.md +149 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives.steer.md +146 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives.think.md +141 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.2.composites.zoom.md +127 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.3.catalogs.md +107 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.3.grammar.md +124 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang_.md +0 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/inflight/concept.vs.idea.md +70 -0
- package/dist/logic/roles/bhrain/.briefs/cognition/inflight/core.concept.adjectives.md +8 -0
- package/dist/logic/roles/bhrain/.briefs/distilisys.grammar.compressed.md +19 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.1.why.common.[article].md +32 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.1.why.term_smells.[article].md +36 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.1.why.term_smells.detection.[lesson].md +73 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.2.tactic.eliminate.[article].md +55 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.2.tactic.eliminate.[lesson].md +41 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait]._.md +66 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait].balance.md +36 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait].bane.md +34 -0
- package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait].boon.md +35 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.1.ontology.[article].frame.docs_as_materializations.md +63 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.1.ontology.[article].frame.docs_as_references.md +45 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.2.rel.many_to_many.[article].md +37 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.3.instances.[article].md +39 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.4.documents.[article].md +37 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.5.concepts.[article].md +39 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents._.[article].md +48 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents._.[catalog].md +52 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.articles.[article].md +40 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.catalogs.[article].md +41 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.demos.[article].md +42 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.lessons.[article].md +42 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression.1.refs._.[article].md +41 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression.2.kernels._.[article].i1.md +50 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression.3.briefs._.[article].md +40 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression._.[article].md +90 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression._.[catalog].persp.garden.md +64 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[article].md +45 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].algorithm.md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].color.md +56 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].empathy.md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].entropy.md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].gravity.md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].joke.md +56 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].value.md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2._.[catalog].md +43 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.articulate.[article].md +27 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.articulate.[lesson].md +49 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.catalogize.[article].md +27 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.catalogize.[lesson].md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.demonstrate.[article].md +26 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.demonstrate.[lesson].md +49 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.lessonize.[article].md +26 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.lessonize.[lesson].md +54 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.kernelize._.[article].md +58 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.kernelize._.[lesson].md +88 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno351.docs.are_instances.[article].md +34 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno351.docs.recursion.[catalog].md +44 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno401.actors.1.role.author.[article].md +36 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno401.actors.1.role.librarian.[article].md +40 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno401.actors.2.interdependence.[article].md +52 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno501.doc.enbrief.catalog.structure1.[article].md +53 -0
- package/dist/logic/roles/bhrain/.briefs/knowledge/kno501.doc.enbrief.catalog.structure1.[lesson].template.md +101 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/article.variant.vision.[article].md +60 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/term.expectation.vs_assumption._.md +60 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/term.frame.vs_perspective.[article].md +96 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/term.invariant.[article].md +29 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/term.lesson._vs_article.[article].md +36 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/term.ref._vs_brief.md +90 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/term.referent.[article].md +43 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/usage.lesson_vs_article.[lesson].md +31 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.context/usage.lesson_vs_article_vs_demo.[lesson].md +37 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/.readme.md +12 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>._.[article].frame.cognitive.md +33 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>._.[article].frame.tactical.md +45 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.[catalog].md +83 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.concept_dimension.examples.[article][seed].md +4 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.concept_dimension.invariants.[article].md +36 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.from.examples.md +44 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.from.seed.md +48 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.with.templates.[article].md +57 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.with.templates.[gallery][review].effective.md +1 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tone.bluecollar.[article][seed].md +5 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<catalogize>._.[article][seed].md +3 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<catalogize>.observation.via_clusterage_over_via_imagination.[seed].md +6 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<catalogize>.vs_diverge.[article].persp.save_compute.md +46 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>._.[article].frame.colloquial.i2.by_grok.md +64 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.[catalog].md +106 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.contrast.[demo].usecase.vs_userjourney.by_chatgpt.md +45 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.counter.[demo].usecase.flyer.by_chargpt.md +38 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.counter.[demo].walkability.phoenix.by_chargpt.md +41 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].shear_force.scissors.by_grok.md +52 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].tea.darjeeling.by_grok.md +50 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].usecase.book_flight.by_grok.md +54 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].usecase.order_food.by_chatgpt.md +40 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].walkability.portland.by_chatgpt.i3.md +42 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].walkability.portland.by_grok.i2.md +49 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[lesson].howto.md +28 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.structure.[article].i2.md +73 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.narrative.[demo].usecase.order_online.by_chatgpt.md +34 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.walkthrough.[demo].usecase.book_online.by_chatgpt.md +47 -0
- package/dist/logic/roles/bhrain/.briefs/librarian.tactics/[brief].verbiage.outline.over.narrative.md +55 -0
- package/dist/logic/roles/bhrain/.briefs/logistics/term.logistics.[article].md +21 -0
- package/dist/logic/roles/bhrain/.briefs/logistics/term.logistics.of_information.[article].md +22 -0
- package/dist/logic/roles/bhrain/.briefs/logistics/term.logistics.of_knowledge.[article].md +29 -0
- package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.acuity.md +77 -0
- package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.breadth.md +74 -0
- package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.depth.md +77 -0
- package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.distance.md +92 -0
- package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.tradeoffs.md +107 -0
- package/dist/logic/roles/bhrain/.briefs/tactician/tactics.compose.traits_and_skills.[article].md +76 -0
- package/dist/logic/roles/bhrain/.briefs/tactician/trait.articulation.[article].md +67 -0
- package/dist/logic/roles/bhrain/.briefs/tactician/trait.purpose.[article].md +56 -0
- package/dist/logic/roles/bhrain/.briefs/tactician/trait.vs_skill.[article].md +55 -0
- package/dist/logic/roles/bhrain/.briefs/tactician/trait.vs_tactic.[article].md +70 -0
- package/dist/logic/roles/bhrain/.briefs/terms.motive.intent.goal.md +46 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<cluster>._.[article].frame.tactical._.md +85 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<cluster>.vs_<diverge>.duality.[article].md +43 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<diverge>._.[article].frame.cognitive.[seed].md +4 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<diverge>._.[article].frame.tactical.md +89 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<elaborate>_vs_<elucidate>.[seed].md +1 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>._.[article].md +113 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>._.[gallery].plumber.diagnose.md +130 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>._.[gallery].thinker.enquestion.md +125 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>.tactic.perspectives.[article].md +36 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<triage>._.[article].frame.tactical.md +85 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<triage>.persp.grades_from_context.[article].md +48 -0
- package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<triage>.persp.implicit_question.[article].md +65 -0
- package/dist/logic/roles/bhrain/.briefs/trait.chillnature.md +14 -0
- package/dist/logic/roles/bhrain/.briefs/trait.ocd.md +5 -0
- package/dist/logic/roles/bhrain/.briefs/worders/core.matmuls_vecmuls_elemuls.md +93 -0
- package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.as_origin.md +62 -0
- package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.self_attention.[article].md +93 -0
- package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.self_attention.[demo].ambig.bank.md +80 -0
- package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.self_attention.[demo].cat_sat.md +67 -0
- package/dist/logic/roles/bhrain/.briefs/worders/force.repeat_input_structures.md +48 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.interdependence.[article].md +37 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.interdependence.[demo].domain.physics.md +30 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internal_vs_external.[article].artist_vs_librarian.md +44 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internal_vs_external.[demo].artist_vs_librarian.md +37 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internal_vs_external.[demo].domain.physics.md +39 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[article].md +35 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[demo].artist.md +36 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[demo].neural.md +37 -0
- package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[demo].pianist.md +34 -0
- package/dist/logic/roles/bhrain/.briefs/worders/limits.rhyme.md +46 -0
- package/dist/logic/roles/bhrain/.briefs/worders/limits.spell.md +49 -0
- package/dist/logic/roles/bhrain/.briefs/worders/teach.via.library.examples.md +28 -0
- package/dist/logic/roles/bhrain/.briefs/worders/teach.via.library.explanations_vs_examples.md +40 -0
- package/dist/logic/roles/bhrain/.briefs/worders/trend.prefer_reuse.[seed].md +10 -0
- package/dist/logic/roles/bhrain/brief.articulate/stepArticulate.template.md +120 -0
- package/dist/logic/roles/bhrain/brief.demonstrate/stepDemonstrate.template.md +135 -0
- package/dist/logic/roles/bhrain/khue.cluster/stepCluster.template.md +134 -0
- package/dist/logic/roles/bhrain/khue.diverge/stepDiverge.template.md +110 -0
- package/dist/logic/roles/bhrain/khue.instantiate/stepInstantiate.template.md +73 -0
- package/dist/logic/roles/bhrain/khue.triage/stepTriage.template.md +128 -0
- package/dist/logic/roles/coach/.briefs/claude.context-caching.md +76 -0
- package/dist/logic/roles/designer/.briefs/declarative-over-imperative.md +79 -0
- package/dist/logic/roles/designer/.briefs/declarative-over-imperative.stub.md +14 -0
- package/dist/logic/roles/designer/.briefs/pit-of-success.md +70 -0
- package/dist/logic/roles/designer/.briefs/pit-of-success.stub.md +3 -0
- package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.template.md +173 -0
- package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.template.md +88 -0
- package/dist/logic/roles/designer/outlineVision/stepOutlineVision.template.md +47 -0
- package/dist/logic/roles/ecologist/.briefs/.readme.md +17 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys101.distilisys.grammar.md +221 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive._.summary.md +82 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p1.reversibility.entropy.md +39 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p2.option.chance.choice.md +140 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p3.chance.motive.polarity.threat.md +72 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p4.motive.horizon.md +101 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p5.motive.grammar.md +131 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources._.primitives.summary.md +108 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt1.primitive.time.md +56 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt2.primitive.energy.md +69 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt3.primitive.space.md +85 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt4.primitive.claim.md +113 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt5.composites.md +146 -0
- package/dist/logic/roles/ecologist/.briefs/distilisys/sys231.actor.claims.p1.primitive.exchange.md +130 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/.eco001.origin.prompt.md +11 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco001.overview.md +44 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco101.core-system-understanding.md +70 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p1.ecosystem-structure.md +62 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p2.trophic-dynamics.md +59 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p3.population-ecology.md +71 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p4.community-interactions.md +78 -0
- package/dist/logic/roles/ecologist/.briefs/ecology/eco505.systems-thinking.md +62 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ001.overview.md +65 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ101.core-mechanics.md +65 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ101.p1.supply-and-demand.md +76 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ101.p2.opportunity-cost.md +106 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ101.p3.marginal-analysis.md +79 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ101.p4.rational-choice.md +81 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ201.market-structures-and-failures.md +81 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ301.production-and-growth.md +71 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ401.macro-systems.md +92 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ501.global-and-institutional.md +85 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ501.p1.game-theory.md +142 -0
- package/dist/logic/roles/ecologist/.briefs/economy/econ501.p4.behavioral-economics.md +146 -0
- package/dist/logic/roles/ecologist/.briefs/product/user.journey._.[article].i1.md +68 -0
- package/dist/logic/roles/ecologist/.briefs/product/user.journey._.[article].md +0 -0
- package/dist/logic/roles/ecologist/.briefs/product/user.journey.purpose.[article].i1.md +52 -0
- package/dist/logic/roles/ecologist/.briefs/product/user.journey.purpose.[article].md +52 -0
- package/dist/logic/roles/ecologist/.briefs/term.distillation.md +93 -0
- package/dist/logic/roles/mechanic/.briefs/architecture/bounded-contexts.md +61 -0
- package/dist/logic/roles/mechanic/.briefs/architecture/directional-dependencies.md +82 -0
- package/dist/logic/roles/mechanic/.briefs/architecture/domain-driven-design.md +61 -0
- package/dist/logic/roles/mechanic/.briefs/architecture/ubiqlang.md +37 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/_mech.compressed.md +57 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/_mech.compressed.prompt.md +5 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/flow.failfast.md +37 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/flow.idempotency.md +63 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/flow.immutability.md +48 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/flow.narratives.md +74 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/flow.single-responsibility.md +67 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/flow.transformers_over_conditionals.[lesson].md +97 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.args.input-context.md +61 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.args.input-inline.md +63 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.arrowonly.md +47 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.clear-contracts.md +53 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.tests.given-when-then.md +62 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.what-why.md +88 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/mech.what-why.v2.md +98 -0
- package/dist/logic/roles/mechanic/.briefs/codestyle/pit-of-success.via.minimize-surface-area.md +58 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/never.term.script.md +7 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.emojis.chill_nature.md +24 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.jq.over_alt.[demo].md +29 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.terraform.[criteria].md +4 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.terraform.[seed].md +17 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.dependency.pinned_versions.md +3 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.idempotency.md +33 -0
- package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.knowledge.externalized.md +17 -0
- package/dist/logic/roles/mechanic/.briefs/engineer/dependency-injection.md +118 -0
- package/dist/logic/roles/mechanic/.briefs/engineer/dependency-injection.stub.md +11 -0
- package/dist/logic/roles/mechanic/.briefs/lessons/code.prod.typescript.types/bivariance_vs_contravariance.[lesson].md +95 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.contract.inputs.nameargs/bad-practice/forbid.positional-args.md +43 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.contract.inputs.nameargs/best-practice/require.namedargs.md +6 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.declarative/.readme.md +0 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.declarative/best-practice/declastruct.[demo].md +485 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/bad-practices/blocker.has.attributes.nullable.md +13 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/bad-practices/blocker.has.attributes.undefined.md +15 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/bad-practices/blocker.refs.immuatble.md +9 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/best-practice/ref.package.domain-objects.[readme].md +585 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.operations/best-practice/require.sync.names.md +14 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/bad-practices/forbid.failhide.md +19 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/bad-practices/forbid.hide_errors.md +13 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/best-practice/prefer.HelpfulError.wrap.md +54 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/best-practice/require.fail_fast.[demo].shell.md +17 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/best-practice/require.fail_fast.md +28 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.narrative/bad-practices/forbid.else.md +54 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.narrative/best-practice/early-returns.named-checks.[demo].md +181 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/bad-practices/forbid.barrel.exports.ts.md +41 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/bad-practices/forbid.index.ts.md +3 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/best-practice/directional-dependencies.md +82 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/best-practice/dot-test-and-dot-temp.md +20 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.typescript.utils/best-practice/ref.package.as-command.[tips].md +7 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.acceptance/best-practice/blackbox.md +5 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.diagnose.[lesson].md +14 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.run.[lesson].md +18 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.use.[lesson].md +20 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.[lesson].md +3 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.[lesson].on_scope.for_integ.md +8 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.[lesson].on_scope.for_units.md +9 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.bdd.[lesson].md +280 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/prefer.datadriven.md +41 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/ref.test-fns.[readme].md +185 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/whento.snapshots.[lesson].md +23 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/.readme.md +1 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/bad-practices/forbid.term=existing.md +10 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/best-practice/require.order.noun_adj.md +39 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/domain=practices.terms=forbid_prefer_desire_require.md +13 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/domain=software.terms=prodcode_vs_testcode.md +7 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.tones/.readme.md +3 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.tones/prefer.chill-nature.md +0 -0
- package/dist/logic/roles/mechanic/.briefs/patterns/lang.tones/prefer.lowercase.md +0 -0
- package/dist/logic/roles/mechanic/.briefs/style.compressed.md +29 -0
- package/dist/logic/roles/mechanic/.briefs/style.compressed.prompt.md +5 -0
- package/dist/logic/roles/mechanic/.briefs/style.names.treestruct.md +48 -0
- package/dist/logic/roles/mechanic/.briefs/style.names.ubiqlang.md +37 -0
- package/dist/logic/roles/mechanic/.briefs/style.words.lowercase.md +36 -0
- package/dist/logic/roles/mechanic/.briefs/terms/badpractice/script.md +9 -0
- package/dist/logic/roles/mechanic/.briefs/terms/plan.exec_vs_apply.md +45 -0
- package/dist/logic/roles/mechanic/.skills/claude.hooks/check.pretooluse.permissions.sh +235 -0
- package/dist/logic/roles/mechanic/.skills/claude.hooks/forbid.stderr.redirect.sh +57 -0
- package/dist/logic/roles/mechanic/.skills/declapract.upgrade.sh +50 -0
- package/dist/logic/roles/mechanic/.skills/git.worktree.common.sh +58 -0
- package/dist/logic/roles/mechanic/.skills/git.worktree.del.sh +51 -0
- package/dist/logic/roles/mechanic/.skills/git.worktree.get.sh +51 -0
- package/dist/logic/roles/mechanic/.skills/git.worktree.set.sh +108 -0
- package/dist/logic/roles/mechanic/.skills/git.worktree.sh +46 -0
- package/dist/logic/roles/mechanic/.skills/init.bhuild.sh +260 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.forbid.stderr.redirect.sh +116 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.pretooluse.sh +118 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.sessionstart.sh +113 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.sh +25 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.permissions.sh +156 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.sh +47 -0
- package/dist/logic/roles/mechanic/.skills/link.claude.transcripts.sh +43 -0
- package/dist/logic/roles/mechanic/.skills/test.integration.sh +50 -0
- package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.template.md +46 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.template.md +78 -0
- package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.template.md +75 -0
- package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.template.md +67 -0
- package/dist/logic/roles/mechanic/study/routeStudyAsk.template.md +73 -0
- package/dist/logic/roles/mechanic/write/.test/prior.template.md +21 -0
- package/dist/logic/roles/mechanic/write/stepWrite.template.md +38 -0
- package/package.json +2 -2
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
prefer the inclusion of emojis in comments and logs, to make things easier to grok
|
|
2
|
+
|
|
3
|
+
prefer chill, nature based emojis, to give a zen vibe
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
careful not to do emojis - and try and reuse emojis based on similarities
|
|
8
|
+
|
|
9
|
+
ideally, no more than 5-7 different emojis would be present at a time, and typically, only for imporant callouts
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
otherwise, use neutral and chill unicode characters for bulletpoints and etc
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
e.g.,
|
|
19
|
+
|
|
20
|
+
⛈️ = error
|
|
21
|
+
🔭 = lookup
|
|
22
|
+
✨ = success
|
|
23
|
+
🌿 = output
|
|
24
|
+
🌊 = outcome
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# given
|
|
2
|
+
|
|
3
|
+
you are in a .shell env
|
|
4
|
+
|
|
5
|
+
# what
|
|
6
|
+
|
|
7
|
+
prefer `jq` over escape to other languages, like python
|
|
8
|
+
|
|
9
|
+
# demo
|
|
10
|
+
|
|
11
|
+
### bad practice
|
|
12
|
+
|
|
13
|
+
```sh
|
|
14
|
+
local instance_id
|
|
15
|
+
instance_id=$(echo "$instance_json" | python3 -c "
|
|
16
|
+
import sys, json
|
|
17
|
+
data = json.load(sys.stdin)
|
|
18
|
+
if data and data != 'None':
|
|
19
|
+
print(data.get('InstanceId', ''))
|
|
20
|
+
" 2>/dev/null)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### best practice
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
local instance_id
|
|
28
|
+
instance_id=$(echo "$instance_json" | jq -r '.InstanceId // empty' 2>/dev/null)
|
|
29
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
.what = use terraform rather than adhoc .shell commands to manage infra
|
|
2
|
+
|
|
3
|
+
.why =
|
|
4
|
+
- terraform is declarative
|
|
5
|
+
- enables you to declare desires and compare reality
|
|
6
|
+
- simpler to review for issues, since you see the final product explicitly in code
|
|
7
|
+
- simpler to review for issues, since you see divergence with reality
|
|
8
|
+
- enables drift detection
|
|
9
|
+
- more
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
if your goal is to change infra (add resources, del resources, set resources) => use terraform
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
note = code.actors make it very easy to sync terraform state && go from wish => critera => done
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
idempotency is a must
|
|
2
|
+
|
|
3
|
+
we must always assume that retries will occur
|
|
4
|
+
- user will forget if they ran it or not
|
|
5
|
+
- code will compose dependent flows that may need to repeat operations safely
|
|
6
|
+
- apps will face network errors and retry requests
|
|
7
|
+
|
|
8
|
+
idempotency means that the same request duplicated will succeed as if it only ran once
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
the main methods of doing so are via
|
|
13
|
+
|
|
14
|
+
- findsert = find or insert
|
|
15
|
+
- const before = dao.findByRef()
|
|
16
|
+
- if (before && nonDiff) return before
|
|
17
|
+
- if (before && hasDiff) BadRequestError.throw('can not findsert; entity already exists but with different attributes')
|
|
18
|
+
- const after = dao.upsert()
|
|
19
|
+
- return after
|
|
20
|
+
|
|
21
|
+
- upsert = update or insert
|
|
22
|
+
- this is a standard operation often handled at the database layer
|
|
23
|
+
- simply always overwrite, idempotently
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
why are these the two main modes?
|
|
28
|
+
|
|
29
|
+
because otherwise the only other option is to throw an error on duplicate requests
|
|
30
|
+
|
|
31
|
+
there are fundamentally no other ways to support idempotency
|
|
32
|
+
- if it doesn't exist, great -> insert
|
|
33
|
+
- if it does exist, decide -> update (upsert) or retain (findsert)
|
package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.knowledge.externalized.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
if using a tool dependency that is not already fully understood with internalized knowledge
|
|
2
|
+
|
|
3
|
+
first, it is mandatory to externalize knowledge about that tool
|
|
4
|
+
|
|
5
|
+
for example
|
|
6
|
+
- what is it
|
|
7
|
+
- when was it released
|
|
8
|
+
- how much does it cost
|
|
9
|
+
- how to use it
|
|
10
|
+
|
|
11
|
+
- what are advantages and devantages? boons and banes?
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
research this always via a websearch first
|
|
16
|
+
|
|
17
|
+
and always cite your sources
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
## 🧠 `.brief.designer.dependency-injection`
|
|
2
|
+
|
|
3
|
+
### 🧠 topic: dependency injection
|
|
4
|
+
**why we pass in dependencies instead of hardcoding them**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
### 🎯 goal
|
|
9
|
+
build software that is **flexible, testable, and decoupled**,
|
|
10
|
+
by making dependencies **explicit, swappable, and controlled from the outside**.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🛠 what it is
|
|
15
|
+
|
|
16
|
+
> **dependency injection** = giving a function, class, or module what it needs from the outside,
|
|
17
|
+
> rather than letting it construct or look up those tools internally.
|
|
18
|
+
|
|
19
|
+
for example, instead of having a function reach for its own dependencies:
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
// ❌ tightly coupled and side-effect prone
|
|
23
|
+
import { log } from '@/utils/logger';
|
|
24
|
+
import { getDatabaseConnection } from '@/utils/database';
|
|
25
|
+
|
|
26
|
+
export const upsert = async ({ cost }: { cost: JobLeadCost }) => {
|
|
27
|
+
log.debug('began.upsert', { cost });
|
|
28
|
+
const dbConnection = await getDatabaseConnection();
|
|
29
|
+
const result = await dbConnection.query('SELECT * FROM ...');
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
you inject those dependencies via the standard `(input, context)` pattern:
|
|
34
|
+
|
|
35
|
+
```ts
|
|
36
|
+
// ✅ dependency injection via context
|
|
37
|
+
export const upsert = async (
|
|
38
|
+
{ cost }: { cost: JobLeadCost },
|
|
39
|
+
context: { dbConnection: DatabaseConnection, log: LogMethods }, // note how the .context pattern cleanly separates inputs from dependencies
|
|
40
|
+
) => {
|
|
41
|
+
context.log.debug("began.upsert", { cost });
|
|
42
|
+
const updated = await context.dbConnection.query('SELECT * FROM ...');
|
|
43
|
+
await emitJobLeadCostSetEvent(result, context); // note how easy it is to reuse dependencies via the context pattern
|
|
44
|
+
return updated;
|
|
45
|
+
};
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- the function doesn’t reach into globals or construct its own tools
|
|
49
|
+
- everything it needs is **passed in from the outside**, making it testable, predictable, and side-effect free
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### 🔑 paved pattern: `(input, context)`
|
|
54
|
+
dependency injection is best done by following the **standard procedure contract**:
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
export const doThing = async (
|
|
58
|
+
input: SomeInput,
|
|
59
|
+
context: { db: Db; log: Logger } & OtherContext
|
|
60
|
+
) => { ... }
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- all dependencies go in the `context` argument
|
|
64
|
+
- keeps `input` clean, and `context` flexible
|
|
65
|
+
- enables composition, tracing, and full test control
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### 🤝 why it matters
|
|
71
|
+
|
|
72
|
+
- **testability** — swap real dependencies with mocks/fakes
|
|
73
|
+
- **flexibility** — easily change implementations without changing core logic
|
|
74
|
+
- **separation of concerns** — business logic doesn't manage its own plumbing
|
|
75
|
+
- **explicitness** — makes system wiring visible and intentional
|
|
76
|
+
- **reusability** — same logic can be reused with different behaviors
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 🧱 core principle
|
|
81
|
+
|
|
82
|
+
> **don’t make decisions deep inside the system.**
|
|
83
|
+
> instead, **let the outer layers decide what gets injected**.
|
|
84
|
+
|
|
85
|
+
you keep **policies and tools separate from behaviors**.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 🔍 mental model
|
|
90
|
+
|
|
91
|
+
> dependency injection is like **plugging in a tool** instead of **building one every time**.
|
|
92
|
+
|
|
93
|
+
your procedures say:
|
|
94
|
+
> “give me what I need — I don’t care where it came from.”
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### 🔄 practical benefits
|
|
99
|
+
|
|
100
|
+
| without DI | with DI |
|
|
101
|
+
|----------------------------------------|--------------------------------------------|
|
|
102
|
+
| hardcoded database inside procedures | database passed in as via parameters |
|
|
103
|
+
| requires real API in tests | can inject mock/fake API for testing |
|
|
104
|
+
| logic tied to concrete tools | logic works with any compatible tool |
|
|
105
|
+
| hard to switch infra/tools | swappable with config or environment setup |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### 🧩 final synthesis
|
|
110
|
+
|
|
111
|
+
we inject dependencies to build systems that are easier to **test**, **scale**, and **evolve**.
|
|
112
|
+
|
|
113
|
+
> dependency injection is about building **pure, decoupled, and testable** systems.
|
|
114
|
+
> it eliminates shared state, surfaces side effects, and makes your logic portable and composable.
|
|
115
|
+
> it enables **modularity**, **testability**, and **control**,
|
|
116
|
+
> by making **dependencies external** instead of hidden inside.
|
|
117
|
+
|
|
118
|
+
done right, it's **invisible during use**, and **invaluable during testing, scaling, and evolution**.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
todo: declare why dependency injection leads to a pit of success && why global shared state should be avoided
|
|
2
|
+
|
|
3
|
+
via dependency injection, you always know what's referncing what. no side effects
|
|
4
|
+
|
|
5
|
+
persistance is the only global shared state that should exist - and even that should be managed cautiously (e.g., to avoid race conditions)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
via dependency injection, either via context or input params, you craft safer, easier to test, and more reliable code
|
|
10
|
+
|
|
11
|
+
a significant contributor to the pit-of-success we strive for
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# method syntax for bivariance
|
|
2
|
+
|
|
3
|
+
## .what
|
|
4
|
+
|
|
5
|
+
typescript treats arrow function properties and method syntax differently for variance:
|
|
6
|
+
|
|
7
|
+
- **arrow function syntax** = contravariant on parameters
|
|
8
|
+
- **method syntax** = bivariant on parameters
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
// arrow function syntax (contravariant)
|
|
12
|
+
interface Dao {
|
|
13
|
+
get: (input: SomeInput) => Promise<Result>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// method syntax (bivariant)
|
|
17
|
+
interface Dao {
|
|
18
|
+
get(input: SomeInput): Promise<Result>;
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## .why this matters
|
|
25
|
+
|
|
26
|
+
when checking if a specific type is assignable to a generic type (e.g., `Dao<Specific>` to `Dao<any>`), contravariance on function parameters can cause unexpected failures.
|
|
27
|
+
|
|
28
|
+
### example: the problem
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
interface DeclastructDao<TResourceClass> {
|
|
32
|
+
get: {
|
|
33
|
+
// arrow syntax = contravariant
|
|
34
|
+
byPrimary?: (input: RefByPrimary<TResourceClass>) => Promise<Resource | null>;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// specific dao where RefByPrimary resolves to {uuid: string}
|
|
39
|
+
const specificDao: DeclastructDao<typeof MyResource> = { ... };
|
|
40
|
+
|
|
41
|
+
// generic dao shape where RefByPrimary<any> resolves to {}
|
|
42
|
+
type GenericDao = DeclastructDao<any>;
|
|
43
|
+
|
|
44
|
+
// ❌ fails: {uuid: string} is not assignable to {}
|
|
45
|
+
const generic: GenericDao = specificDao;
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
the contravariant check asks: "can a function accepting `{uuid: string}` be used where a function accepting `{}` is expected?"
|
|
49
|
+
|
|
50
|
+
answer: **no** — a function requiring `uuid` can't safely accept an empty object.
|
|
51
|
+
|
|
52
|
+
### example: the fix
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
interface DeclastructDao<TResourceClass> {
|
|
56
|
+
get: {
|
|
57
|
+
// method syntax = bivariant
|
|
58
|
+
byPrimary?(input: RefByPrimary<TResourceClass>): Promise<Resource | null>;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ✅ works: bivariance allows assignment in either direction
|
|
63
|
+
const generic: GenericDao = specificDao;
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## .when to use
|
|
69
|
+
|
|
70
|
+
use method syntax when:
|
|
71
|
+
|
|
72
|
+
1. you need interfaces with generic type parameters to be assignable to their `<any>` variants
|
|
73
|
+
2. you're defining dao/repository patterns where specific implementations must fit into generic collections
|
|
74
|
+
3. the interface will be used in `Record<string, Interface<any>>` shapes
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## .tradeoff
|
|
79
|
+
|
|
80
|
+
bivariance is slightly less type-safe at the boundary — typescript won't catch certain mismatches. however, this is often the correct behavior for:
|
|
81
|
+
|
|
82
|
+
- generic collections of typed implementations
|
|
83
|
+
- plugin/provider patterns
|
|
84
|
+
- dao registries
|
|
85
|
+
|
|
86
|
+
the types remain fully enforced when actually calling the methods on a specific instance.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## .reference
|
|
91
|
+
|
|
92
|
+
this is intentional typescript behavior. method syntax preserves the historical bivariant behavior from before `--strictFunctionTypes` was introduced, because it matches how most developers expect object subtyping to work.
|
|
93
|
+
|
|
94
|
+
- [typescript handbook: type compatibility](https://www.typescriptlang.org/docs/handbook/type-compatibility.html)
|
|
95
|
+
- [typescript pr: strict function types](https://github.com/microsoft/TypeScript/pull/18654)
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
positional args are
|
|
2
|
+
- hard to read
|
|
3
|
+
- easy to break
|
|
4
|
+
|
|
5
|
+
never use positional args if we can avoid them
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
even in bash!
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
e.g., which one's easier to understand?
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
# final attempt with fail_on_error=true (exits on hard failures, warns on timeout)
|
|
18
|
+
_try_start_port_forwarding "$instance_id" "$rds_endpoint" 60 true
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
vs
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
|
|
26
|
+
# final attempt with fail_on_error=true (exits on hard failures, warns on timeout)
|
|
27
|
+
_try_start_port_forwarding \
|
|
28
|
+
instance_id="$instance_id" \
|
|
29
|
+
rds_endpoint="$rds_endpoint" \
|
|
30
|
+
timeout=60 \
|
|
31
|
+
fail_on_error=true
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
- Self-documenting: You can see what each parameter is at the call site
|
|
40
|
+
- Order-independent: Arguments can be passed in any order
|
|
41
|
+
- Easier to maintain: Adding new optional parameters won't break existing calls
|
|
42
|
+
- Validation: Each function validates required parameters
|
|
43
|
+
- Usage examples: Included in function headers
|
|
File without changes
|