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,28 @@
|
|
|
1
|
+
fail fast saves lives
|
|
2
|
+
|
|
3
|
+
when you fail fast, you detect fast, and you fix fast
|
|
4
|
+
|
|
5
|
+
this contributes to a pit of success
|
|
6
|
+
- enables tests to alert when unexpected behaviors occur, detected at build time
|
|
7
|
+
- enables logs to alert when unexpected behaviors occur, detected at monitor time
|
|
8
|
+
=>
|
|
9
|
+
- this allows us to more safely develop => as any surprises will be flagged asap, loud and proud
|
|
10
|
+
- this allows us to more rapidly maintain => as any changes live in production will be flagged asap, loud and proud
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
specifically, you should choose from
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { UnexpectedCodePathError } from 'helpful-errors';
|
|
18
|
+
|
|
19
|
+
throw new UnexpectedCodePathError(message, metadata)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
or
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { BadRequestError } from 'helpful-errors';
|
|
26
|
+
|
|
27
|
+
throw new BadRequestError(message, metadata)
|
|
28
|
+
```
|
package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.narrative/bad-practices/forbid.else.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
else is a code REAK
|
|
2
|
+
|
|
3
|
+
its not even a smell
|
|
4
|
+
|
|
5
|
+
its such a bad smell that it reaks
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
else's can _always_ be better rewriten as an IFFE+EarlyReturn
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
see the narrative flow breifs for more context on the desired goal
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
-------
|
|
17
|
+
|
|
18
|
+
e.g.,
|
|
19
|
+
|
|
20
|
+
> no if else; only early returns; else is a code REAK
|
|
21
|
+
|
|
22
|
+
● You're right - the if/else violates the flow:narrative tactic. Let me
|
|
23
|
+
refactor to use early returns only:
|
|
24
|
+
|
|
25
|
+
● Update(src/domain.operations/vpcTunnel/setVpcTunnel.ts)
|
|
26
|
+
⎿ Updated src/domain.operations/vpcTunnel/setVpcTunnel.ts with 5
|
|
27
|
+
additions and 3 removals
|
|
28
|
+
81 if (portInUse) {
|
|
29
|
+
82 const cacheFilePresent = await isFilePresent({ path:
|
|
30
|
+
cachePath });
|
|
31
|
+
83
|
|
32
|
+
84 + // port used by unknown process; kill it to reclaim
|
|
33
|
+
85 + if (!cacheFilePresent) {
|
|
34
|
+
86 + killProcessOnPort({ port: input.from.port });
|
|
35
|
+
87 + }
|
|
36
|
+
88 +
|
|
37
|
+
89 // check if existing tunnel is ours and healthy
|
|
38
|
+
90 if (cacheFilePresent) {
|
|
39
|
+
91 const cacheContent = await fs.readFile(cachePath,
|
|
40
|
+
'utf-8');
|
|
41
|
+
...
|
|
42
|
+
100 // cleanup stale tunnel
|
|
43
|
+
101 if (isProcessAlive({ pid: cache.pid }))
|
|
44
|
+
process.kill(cache.pid, 'SIGTERM');
|
|
45
|
+
102 await fs.rm(cachePath, { force: true });
|
|
46
|
+
103 - } else {
|
|
47
|
+
104 - // port used by another process; kill it to reclaim
|
|
48
|
+
105 - killProcessOnPort({ port: input.from.port });
|
|
49
|
+
103 }
|
|
50
|
+
104 }
|
|
51
|
+
105
|
|
52
|
+
|
|
53
|
+
● Removed the else block - now both conditions are independent if statements
|
|
54
|
+
with no branching maze.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
|
|
2
|
+
● The check now walks up the prototype chain starting from error.constructor, checking if any class in the
|
|
3
|
+
inheritance hierarchy is named 'BadRequestError'. This handles cases where a custom error class extends
|
|
4
|
+
BadRequestError (or extends something that extends it, etc.).
|
|
5
|
+
|
|
6
|
+
> lets actually create a new constant called "isExtensionOfBadRequestError"
|
|
7
|
+
⎿ Found 3 new diagnostic issues in 1 file (ctrl+o to expand)
|
|
8
|
+
|
|
9
|
+
● Update(src/logic/middlewares/badRequestErrorMiddleware.ts)
|
|
10
|
+
⎿ Updated src/logic/middlewares/badRequestErrorMiddleware.ts with 4 additions and 2 removals
|
|
11
|
+
8 */
|
|
12
|
+
9 export const decideIsBadRequestError = ({ error }: { error: Error }) => {
|
|
13
|
+
10 const isInstanceOfBadRequestError = error instanceof BadRequestError;
|
|
14
|
+
11 - const isNamedAfterBadRequestError = (() => {
|
|
15
|
+
12 - let proto = error.constructor;
|
|
16
|
+
11 + const isNamedAfterBadRequestError =
|
|
17
|
+
12 + error.constructor.name === 'BadRequestError';
|
|
18
|
+
13 + const isExtensionOfBadRequestError = (() => {
|
|
19
|
+
14 + let proto = Object.getPrototypeOf(error.constructor);
|
|
20
|
+
15 while (proto) {
|
|
21
|
+
16 if (proto.name === 'BadRequestError') return true;
|
|
22
|
+
17 proto = Object.getPrototypeOf(proto);
|
|
23
|
+
|
|
24
|
+
● Now I need to add the new constant to the return statement:
|
|
25
|
+
|
|
26
|
+
● Update(src/logic/middlewares/badRequestErrorMiddleware.ts)
|
|
27
|
+
⎿ Updated src/logic/middlewares/badRequestErrorMiddleware.ts with 1 addition and 1 removal
|
|
28
|
+
18 }
|
|
29
|
+
19 return false;
|
|
30
|
+
20 })();
|
|
31
|
+
21 - return isInstanceOfBadRequestError || isNamedAfterBadRequestError;
|
|
32
|
+
21 + return isInstanceOfBadRequestError || isNamedAfterBadRequestError
|
|
33
|
+
+ || isExtensionOfBadRequestError;
|
|
34
|
+
22 };
|
|
35
|
+
23
|
|
36
|
+
24 /**
|
|
37
|
+
|
|
38
|
+
● Done. Now decideIsBadRequestError has three separate checks:
|
|
39
|
+
|
|
40
|
+
1. isInstanceOfBadRequestError - uses instanceof check
|
|
41
|
+
2. isNamedAfterBadRequestError - checks if the error's constructor is named 'BadRequestError'
|
|
42
|
+
3. isExtensionOfBadRequestError - walks up the prototype chain to check if any parent class is named
|
|
43
|
+
'BadRequestError'
|
|
44
|
+
|
|
45
|
+
> add a header comment for each constant
|
|
46
|
+
⎿ Found 1 new diagnostic issue in 1 file (ctrl+o to expand)
|
|
47
|
+
|
|
48
|
+
● Update(src/logic/middlewares/badRequestErrorMiddleware.ts)
|
|
49
|
+
⎿ Updated src/logic/middlewares/badRequestErrorMiddleware.ts with 11 additions and 1 removal
|
|
50
|
+
7 * .what = procedure for deciding whether an error is a bad request error
|
|
51
|
+
8 */
|
|
52
|
+
9 export const decideIsBadRequestError = ({ error }: { error: Error }) => {
|
|
53
|
+
10 + // check if the error is an instance of BadRequestError
|
|
54
|
+
11 const isInstanceOfBadRequestError = error instanceof BadRequestError;
|
|
55
|
+
12 +
|
|
56
|
+
13 + // check if the error's constructor is named 'BadRequestError'
|
|
57
|
+
14 const isNamedAfterBadRequestError =
|
|
58
|
+
15 error.constructor.name === 'BadRequestError';
|
|
59
|
+
16 +
|
|
60
|
+
17 + // check if any parent class in the prototype chain is named 'BadRequestError'
|
|
61
|
+
18 const isExtensionOfBadRequestError = (() => {
|
|
62
|
+
19 let proto = Object.getPrototypeOf(error.constructor);
|
|
63
|
+
20 while (proto) {
|
|
64
|
+
...
|
|
65
|
+
18 }
|
|
66
|
+
19 return false;
|
|
67
|
+
20 })();
|
|
68
|
+
21 - return isInstanceOfBadRequestError || isNamedAfterBadRequestError ||
|
|
69
|
+
- isExtensionOfBadRequestError;
|
|
70
|
+
21 +
|
|
71
|
+
22 + return (
|
|
72
|
+
23 + isInstanceOfBadRequestError ||
|
|
73
|
+
24 + isNamedAfterBadRequestError ||
|
|
74
|
+
25 + isExtensionOfBadRequestError
|
|
75
|
+
26 + );
|
|
76
|
+
27 };
|
|
77
|
+
28
|
|
78
|
+
29 /**
|
|
79
|
+
|
|
80
|
+
● Done. Added header comments for each constant and also fixed the formatting on the return statement to
|
|
81
|
+
satisfy the eslint rule.
|
|
82
|
+
|
|
83
|
+
> use early returns after each check, rather than needoing to evalaute all three
|
|
84
|
+
⎿ Found 3 new diagnostic issues in 1 file (ctrl+o to expand)
|
|
85
|
+
|
|
86
|
+
● Update(src/logic/middlewares/badRequestErrorMiddleware.ts)
|
|
87
|
+
⎿ Updated src/logic/middlewares/badRequestErrorMiddleware.ts with 8 additions and 16 removals
|
|
88
|
+
8 */
|
|
89
|
+
9 export const decideIsBadRequestError = ({ error }: { error: Error }) => {
|
|
90
|
+
10 // check if the error is an instance of BadRequestError
|
|
91
|
+
11 - const isInstanceOfBadRequestError = error instanceof BadRequestError;
|
|
92
|
+
11 + if (error instanceof BadRequestError) return true;
|
|
93
|
+
12
|
|
94
|
+
13 // check if the error's constructor is named 'BadRequestError'
|
|
95
|
+
14 - const isNamedAfterBadRequestError =
|
|
96
|
+
15 - error.constructor.name === 'BadRequestError';
|
|
97
|
+
14 + if (error.constructor.name === 'BadRequestError') return true;
|
|
98
|
+
15
|
|
99
|
+
16 // check if any parent class in the prototype chain is named 'BadRequestError'
|
|
100
|
+
17 - const isExtensionOfBadRequestError = (() => {
|
|
101
|
+
18 - let proto = Object.getPrototypeOf(error.constructor);
|
|
102
|
+
19 - while (proto) {
|
|
103
|
+
20 - if (proto.name === 'BadRequestError') return true;
|
|
104
|
+
21 - proto = Object.getPrototypeOf(proto);
|
|
105
|
+
22 - }
|
|
106
|
+
23 - return false;
|
|
107
|
+
24 - })();
|
|
108
|
+
17 + let proto = Object.getPrototypeOf(error.constructor);
|
|
109
|
+
18 + while (proto) {
|
|
110
|
+
19 + if (proto.name === 'BadRequestError') return true;
|
|
111
|
+
20 + proto = Object.getPrototypeOf(proto);
|
|
112
|
+
21 + }
|
|
113
|
+
22
|
|
114
|
+
23 - return (
|
|
115
|
+
24 - isInstanceOfBadRequestError ||
|
|
116
|
+
25 - isNamedAfterBadRequestError ||
|
|
117
|
+
26 - isExtensionOfBadRequestError
|
|
118
|
+
27 - );
|
|
119
|
+
23 + return false;
|
|
120
|
+
24 };
|
|
121
|
+
25
|
|
122
|
+
26 /**
|
|
123
|
+
|
|
124
|
+
● Done. Now the function uses early returns, so it short-circuits as soon as any check passes without needing
|
|
125
|
+
to evaluate the remaining checks.
|
|
126
|
+
|
|
127
|
+
> header comment on the last return, too
|
|
128
|
+
⎿ Found 3 new diagnostic issues in 1 file (ctrl+o to expand)
|
|
129
|
+
|
|
130
|
+
● Update(src/logic/middlewares/badRequestErrorMiddleware.ts)
|
|
131
|
+
⎿ Updated src/logic/middlewares/badRequestErrorMiddleware.ts with 1 addition
|
|
132
|
+
20 proto = Object.getPrototypeOf(proto);
|
|
133
|
+
21 }
|
|
134
|
+
22
|
|
135
|
+
23 + // otherwise, not a bad request error
|
|
136
|
+
24 return false;
|
|
137
|
+
25 };
|
|
138
|
+
26
|
|
139
|
+
|
|
140
|
+
● Done.
|
|
141
|
+
|
|
142
|
+
> keep the names of the constants though; if (isXyz) is important for greater readability
|
|
143
|
+
⎿ Found 3 new diagnostic issues in 1 file (ctrl+o to expand)
|
|
144
|
+
|
|
145
|
+
● Update(src/logic/middlewares/badRequestErrorMiddleware.ts)
|
|
146
|
+
⎿ Updated src/logic/middlewares/badRequestErrorMiddleware.ts with 14 additions and 7 removals
|
|
147
|
+
8 */
|
|
148
|
+
9 export const decideIsBadRequestError = ({ error }: { error: Error }) => {
|
|
149
|
+
10 // check if the error is an instance of BadRequestError
|
|
150
|
+
11 - if (error instanceof BadRequestError) return true;
|
|
151
|
+
11 + const isInstanceOfBadRequestError = error instanceof BadRequestError;
|
|
152
|
+
12 + if (isInstanceOfBadRequestError) return true;
|
|
153
|
+
13
|
|
154
|
+
14 // check if the error's constructor is named 'BadRequestError'
|
|
155
|
+
15 - if (error.constructor.name === 'BadRequestError') return true;
|
|
156
|
+
15 + const isNamedAfterBadRequestError =
|
|
157
|
+
16 + error.constructor.name === 'BadRequestError';
|
|
158
|
+
17 + if (isNamedAfterBadRequestError) return true;
|
|
159
|
+
18
|
|
160
|
+
19 // check if any parent class in the prototype chain is named 'BadRequestError'
|
|
161
|
+
20 - let proto = Object.getPrototypeOf(error.constructor);
|
|
162
|
+
21 - while (proto) {
|
|
163
|
+
22 - if (proto.name === 'BadRequestError') return true;
|
|
164
|
+
23 - proto = Object.getPrototypeOf(proto);
|
|
165
|
+
24 - }
|
|
166
|
+
20 + const isExtensionOfBadRequestError = (() => {
|
|
167
|
+
21 + let proto = Object.getPrototypeOf(error.constructor);
|
|
168
|
+
22 + while (proto) {
|
|
169
|
+
23 + if (proto.name === 'BadRequestError') return true;
|
|
170
|
+
24 + proto = Object.getPrototypeOf(proto);
|
|
171
|
+
25 + }
|
|
172
|
+
26 + return false;
|
|
173
|
+
27 + })();
|
|
174
|
+
28 + if (isExtensionOfBadRequestError) return true;
|
|
175
|
+
29
|
|
176
|
+
30 // otherwise, not a bad request error
|
|
177
|
+
31 return false;
|
|
178
|
+
|
|
179
|
+
● Done. Now each check has a named constant (isInstanceOfBadRequestError, isNamedAfterBadRequestError,
|
|
180
|
+
isExtensionOfBadRequestError) followed by an early return, giving both readability and short-circuit
|
|
181
|
+
evaluation.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
this is an alias to ./forbid.index.ts.md
|
|
2
|
+
|
|
3
|
+
NEVER do barrel exports
|
|
4
|
+
|
|
5
|
+
e.g.,
|
|
6
|
+
- `src/domain.objects/index.ts`
|
|
7
|
+
- `src/domain.operations/organization/index.ts`
|
|
8
|
+
- `src/domain.operations/organizationAccount/index.ts`
|
|
9
|
+
- `src/access/daos/index.ts`
|
|
10
|
+
- `src/contract/sdks/index.ts`
|
|
11
|
+
|
|
12
|
+
all are banned
|
|
13
|
+
|
|
14
|
+
they're just new aliases that increase
|
|
15
|
+
- codepath variants
|
|
16
|
+
- cyclical import chances
|
|
17
|
+
|
|
18
|
+
totally forbidden
|
|
19
|
+
|
|
20
|
+
they add zero value
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
the only thing that's allowed is
|
|
26
|
+
|
|
27
|
+
within an index.ts file, exporting one object
|
|
28
|
+
|
|
29
|
+
e.g.,
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
export const daoAwsOrganization = {
|
|
33
|
+
getOne,
|
|
34
|
+
getAll,
|
|
35
|
+
set,
|
|
36
|
+
del,
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
nice and tight export
|
|
40
|
+
|
|
41
|
+
but thats it. never just an export forwarder
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
.tactic = arch:directional-deps
|
|
2
|
+
|
|
3
|
+
.what
|
|
4
|
+
enforce strict top-down dependency flow across layered system boundaries — lower layers must never import from higher ones
|
|
5
|
+
|
|
6
|
+
.scope
|
|
7
|
+
- applies to all folders and modules within `src/`
|
|
8
|
+
- required for `contract/`, `access/`, `domain.objects/`, `domain.operations/`
|
|
9
|
+
- governs imports, module references, and stitched flow boundaries
|
|
10
|
+
|
|
11
|
+
.why
|
|
12
|
+
- upholds **separation of concerns** and enforces **clean architecture**
|
|
13
|
+
- prevents circular dependencies and tangled system boundaries
|
|
14
|
+
- makes each layer easier to test, replace, and understand in isolation
|
|
15
|
+
- aligns with `arch:bounded-contexts` and enables predictable top-down orchestration
|
|
16
|
+
|
|
17
|
+
.structure
|
|
18
|
+
\`\`\`
|
|
19
|
+
src/
|
|
20
|
+
contract/ // topmost — public interfaces, local commands
|
|
21
|
+
api/ // public invocable api endpoints, deployed and exposed by the project; e.g., via `aws-lambda`
|
|
22
|
+
cmd/ // private internal use entrypoints, supported by the project; e.g., via `as-command`
|
|
23
|
+
sdk/ // public software development kit exports, supported by the project; e.g., `export ...`
|
|
24
|
+
cli/ // public command line interface contracts, supported by the project; e.g., via `commander`
|
|
25
|
+
|
|
26
|
+
access/ // infrastructure layer (daos, sdks, svcs)
|
|
27
|
+
daos/ // private persistence logic — may reference domain objects
|
|
28
|
+
sdks/ // remote third party contracts, from any alt org — may declare their own domain.objects
|
|
29
|
+
svcs/ // remote first party contracts, from our own org — may declare their own domain.objects
|
|
30
|
+
|
|
31
|
+
domain.objects/ // canonical domain declarations
|
|
32
|
+
domain.operations/ // domain behavior + business rules
|
|
33
|
+
|
|
34
|
+
infra/ // infrastructure specific adapters
|
|
35
|
+
\`\`\`
|
|
36
|
+
|
|
37
|
+
.how
|
|
38
|
+
- each layer may depend **only on the layers below it**
|
|
39
|
+
- `contract/` may depend on `domain.objects/` and `domain.operations/`
|
|
40
|
+
- `access/` may depend on `domain.objects/` and `domain.operations/`
|
|
41
|
+
- `domain.operations/` may depend on `domain.objects/` or `infra/`
|
|
42
|
+
- `domain.objects/` must not depend on anything outside its own layer
|
|
43
|
+
- `infra/` must not depend on anything outside its own layer
|
|
44
|
+
|
|
45
|
+
- stitched flows live in `domain.operations/` or `contract/commands/` and orchestrate downstream only
|
|
46
|
+
- never import upward across layers (e.g., `domain.objects/` importing `access/`)
|
|
47
|
+
- shared types must follow the same directional rules
|
|
48
|
+
|
|
49
|
+
.enforcement
|
|
50
|
+
- imports that violate top-down boundary = **BLOCKER**
|
|
51
|
+
- circular dependencies between layers = **BLOCKER**
|
|
52
|
+
- logic in `domain.objects/` must never reach into `access/`, `contract/`, or `domain.operations/`
|
|
53
|
+
- logic in `domain.operations/` must not reference infrastructure concerns; they can can only leverage `infra/` adapters
|
|
54
|
+
- logic in `access/` may use domain layers but must remain free of domain knowledge and business rules
|
|
55
|
+
- logic in `infra/` must remain free of domain knowledge and business rules
|
|
56
|
+
|
|
57
|
+
.examples
|
|
58
|
+
|
|
59
|
+
✅ positive
|
|
60
|
+
\`\`\`ts
|
|
61
|
+
// contract/endpoints/sendInvoice.ts
|
|
62
|
+
import { generateInvoice } from '@/domain.operations/generateInvoice';
|
|
63
|
+
import { invoiceDao } from '@/access/daos/invoiceDao';
|
|
64
|
+
|
|
65
|
+
// access/daos/jobDao.ts
|
|
66
|
+
import { Job } from '@/domain.objects/Job';
|
|
67
|
+
|
|
68
|
+
// domain.operations/calculateTotal.ts
|
|
69
|
+
import { LineItem } from '@/domain.objects/LineItem';
|
|
70
|
+
\`\`\`
|
|
71
|
+
|
|
72
|
+
❌ negative
|
|
73
|
+
\`\`\`ts
|
|
74
|
+
// domain.objects/Customer.ts
|
|
75
|
+
import { customerDao } from '@/access/daos/customerDao'; // ⛔ illegal upward import
|
|
76
|
+
|
|
77
|
+
// domain.operations/InvoiceOps.ts
|
|
78
|
+
import { runFlow } from '@/contract/commands'; // ⛔ direction violation
|
|
79
|
+
|
|
80
|
+
// access/svcs/sdkWrapper.ts
|
|
81
|
+
import { dispatchFlow } from '@/contract/'; // ⛔ bottom-up reference
|
|
82
|
+
\`\`\`
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
prefer
|
|
2
|
+
|
|
3
|
+
.temp/ directories over
|
|
4
|
+
- tmp/
|
|
5
|
+
- temp
|
|
6
|
+
|
|
7
|
+
.test/ directories over
|
|
8
|
+
- __test__
|
|
9
|
+
- __fixtures__
|
|
10
|
+
- __test_assets__
|
|
11
|
+
- __test_utils__
|
|
12
|
+
- etc
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
its easier on the eyes and more consistent with broader patterns
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
this is a NITPICK level violation
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
if you have a failing test
|
|
2
|
+
|
|
3
|
+
1. make the error super clear via
|
|
4
|
+
1. observable error messages
|
|
5
|
+
2. clear log trails
|
|
6
|
+
|
|
7
|
+
2. when you detect which subcomponent has unexpected behavior
|
|
8
|
+
1. cover that subscomponent with tests of its own (unit, integration, etc)
|
|
9
|
+
2. if it does not have its own procedure, breakit out into its own procedure (own function + own file + own test suite)
|
|
10
|
+
|
|
11
|
+
that way
|
|
12
|
+
1. its easy to see exactly what is failing
|
|
13
|
+
2. its easy to prove we fixed it (or verify that the behavior is / isnt expected)
|
|
14
|
+
3. we can systematically track down the bug, one subcomponnent at a time
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
1. lookup the organization to use from declapract.use.yml
|
|
2
|
+
2. declare the AWS_PROFILE based on the pattern `AWS_PROFILE=$organization.dev`
|
|
3
|
+
1. always use .dev, never .prod
|
|
4
|
+
2. this specifies which remote resources we'll have access to for the session
|
|
5
|
+
3. we always test against dev resources, to avoid prod pollution
|
|
6
|
+
3. run npm run start:testdb (or provision:integration-test-db, if start:testdb is not available yet)
|
|
7
|
+
1. this setsup the local testdb against which the tests can be run
|
|
8
|
+
|
|
9
|
+
then, you can run the tests you need to
|
|
10
|
+
|
|
11
|
+
e.g.,
|
|
12
|
+
|
|
13
|
+
AWS_PROFILE=$organization.dev npm run test:integration -- syncPhoneFromWhodis.integration.test.ts
|
|
14
|
+
AWS_PROFILE=$organization.dev npm run test:unit -- syncPhoneFromWhodis.test.ts
|
|
15
|
+
|
|
16
|
+
etc
|
|
17
|
+
|
|
18
|
+
check package json for the other test variants you can run
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
instead of rerunning tests over and over and getting the `head` to check what happened while preserving context
|
|
2
|
+
|
|
3
|
+
its BEST
|
|
4
|
+
|
|
5
|
+
to `| tee` into a `@gitroot/.log/test/(unit|integration|acceptance)/run.$ISOTIMESTAMP.out` file
|
|
6
|
+
|
|
7
|
+
then you can review that file over and over
|
|
8
|
+
|
|
9
|
+
also, other agents can review as well in parallel
|
|
10
|
+
|
|
11
|
+
last, it can also be used to compare progress in changes of tests
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
so, pretty much ALWAYS, you should ` | tee` into one of these files
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
===
|
|
19
|
+
|
|
20
|
+
best practice is to run test via `.skills/run.test.sh`, which does this for you
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
|
|
2
|
+
to create an integration test, just add a file with .integration.test.ts extension (collocated) and dont mock anything
|
|
3
|
+
|
|
4
|
+
you can spy, but never mock
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
use the less on in src/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.bdd.[lesson].md for preference on pattern
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
for unit tests:
|
|
3
|
+
|
|
4
|
+
only test that the behaviors explicitly important for that test
|
|
5
|
+
|
|
6
|
+
no need to overtest, only whatever is scoped for that test and unique to it
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
use the less on in src/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.bdd.[lesson].md for preference on pattern
|