---
{
  "n": 20,
  "title": "The codebase keeps its architecture",
  "abstract": "",
  "refs": [],
  "seen": [
    "agent",
    "user"
  ],
  "data": {
    "command": ".journal/plugins/code-commandments/bin/commandments judge",
    "every": 0,
    "buttons": [
      {
        "label": "Run",
        "type": "check",
        "action": "run",
        "n": 20,
        "again": true
      }
    ],
    "running": {},
    "last": {
      "ok": false,
      "code": 1,
      "at": 1790110220.155659,
      "took": 1.2,
      "steps": 0,
      "output": "  \u001b[36mweb/src/chat/DumpWindow.vue:596\u001b[0m  <template>  \u001b[2m[DeepNestedDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:623\u001b[0m  <template>  \u001b[2m[DeepNestedDetector]\u001b[0m\n  \u001b[36mweb/src/chat/Turn.vue:176\u001b[0m  <button>  \u001b[2m[DeepDataReachDetector]\u001b[0m\n  \u001b[36mweb/src/resource/CheckResult.vue:58\u001b[0m  <template>  \u001b[2m[DeepDataReachDetector]\u001b[0m\n  \u001b[36mweb/src/resource/ResourceBody.vue:85\u001b[0m  <article>  \u001b[2m[DeepDataReachDetector]\u001b[0m\n  \u001b[36mweb/src/resource/Revisions.vue:42\u001b[0m  <template>  \u001b[2m[DeepDataReachDetector]\u001b[0m\n  \u001b[36mweb/src/resource/Revisions.vue:42\u001b[0m  <template>  \u001b[2m[DeepDataReachDetector]\u001b[0m\n  \u001b[32m\u21b3 auto-fixable: vendor/bin/commandments repent --repent=latest --sin=deep-data-reach\u001b[0m\n  \u001b[32m\u21b3 auto-fixable: vendor/bin/commandments repent --repent=latest --sin=deep-nested\u001b[0m\n\n\u001b[1;33mfrontend/vue-control-flow\u001b[0m  (19)\n  \u001b[1;36m\u21b3 LOAD the skill `commandments-frontend-vue-control-flow` before fixing\u001b[0m\n    \u001b[2mDon't fix from memory. If you think it's already loaded, assume it is NOT \u2014 a compaction may have dropped it \u2014 and load it again to be sure.\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:373\u001b[0m  <button>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:418\u001b[0m  <span>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:482\u001b[0m  <button>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:517\u001b[0m  <span>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:601\u001b[0m  <div>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:642\u001b[0m  <div>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:654\u001b[0m  <div>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/DumpWindow.vue:681\u001b[0m  <span>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/chat/Turn.vue:156\u001b[0m  <template>  \u001b[2m[SwitchCaseDetector]\u001b[0m\n  \u001b[36mweb/src/resource/NewResource.vue:79\u001b[0m  <span>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/NewResource.vue:94\u001b[0m  <div>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/NewResource.vue:98\u001b[0m  <div>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/NewResource.vue:104\u001b[0m  <label>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/ResourceActions.vue:91\u001b[0m  <option>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/ResourceBody.vue:98\u001b[0m  <button>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/ResourceBody.vue:267\u001b[0m  <ResourceCard>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/ResourceCard.vue:34\u001b[0m  <span>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/SequenceRuns.vue:36\u001b[0m  <div>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[36mweb/src/resource/SequenceRuns.vue:51\u001b[0m  <li>  \u001b[2m[ControlFlowOnElementDetector]\u001b[0m\n  \u001b[32m\u21b3 auto-fixable: vendor/bin/commandments repent --repent=latest --sin=control-flow-on-element\u001b[0m\n  \u001b[32m\u21b3 auto-fixable: vendor/bin/commandments repent --repent=latest --sin=switch-case\u001b[0m\n  \u001b[32m\u21b3 scaffold the helper: vendor/bin/commandments scaffold --sin=switch-case\u001b[0m\n\n\u001b[1m28 sins\u001b[0m across 2 skills.\n\u001b[2m\u21b3 the rule above all: trace each sin to where the value is BORN and fix it THERE \u2014 read fix-at-the-source.\u001b[0m\n\u001b[2m\u21b3 don't recognise a rule above? `vendor/bin/commandments info <sin>` \u2014 what it flags, why it is a sin, the fix, an example.\u001b[0m\n\u001b[2m\u21b3 checklist written to /Users/jessegall/projects/agent-journal/.commandments/sessions/default/sins/sins.md \u2014 fix each item, then delete its line\u001b[0m"
    },
    "runs": [
      {
        "ok": false,
        "code": 1,
        "at": 1790110220.155659,
        "took": 1.2
      }
    ]
  },
  "created": 1790110209.604419,
  "updated": 1790110247.110512,
  "deleted": 1790110247.110441,
  "completed": 0.0,
  "outcome": "",
  "type": "check"
}
---

