{"id":49493501,"url":"https://github.com/k08200/decision-lab","last_synced_at":"2026-05-06T05:01:28.571Z","repository":{"id":354863572,"uuid":"1223608387","full_name":"k08200/decision-lab","owner":"k08200","description":"Schema-first personal decision operating system for investment, finance, and management judgment.","archived":false,"fork":false,"pushed_at":"2026-05-01T06:56:42.000Z","size":265,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-01T08:11:21.774Z","etag":null,"topics":["cli","decision-making","finance","investment","json-schema","management","openai","personal-knowledge-management"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/k08200.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-28T13:38:11.000Z","updated_at":"2026-05-01T06:56:09.000Z","dependencies_parsed_at":null,"dependency_job_id":"4275a8a5-10f3-488c-a94b-cfa5bccbd374","html_url":"https://github.com/k08200/decision-lab","commit_stats":null,"previous_names":["k08200/decision-lab"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/k08200/decision-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k08200%2Fdecision-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k08200%2Fdecision-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k08200%2Fdecision-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k08200%2Fdecision-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/k08200","download_url":"https://codeload.github.com/k08200/decision-lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k08200%2Fdecision-lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32679444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T02:33:58.958Z","status":"ssl_error","status_checked_at":"2026-05-06T02:33:39.611Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","decision-making","finance","investment","json-schema","management","openai","personal-knowledge-management"],"created_at":"2026-05-01T08:04:25.004Z","updated_at":"2026-05-06T05:01:28.564Z","avatar_url":"https://github.com/k08200.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Decision Lab\n\n[![npm version](https://img.shields.io/npm/v/@k08200/decision-lab.svg)](https://www.npmjs.com/package/@k08200/decision-lab)\n[![CI](https://github.com/k08200/decision-lab/actions/workflows/ci.yml/badge.svg)](https://github.com/k08200/decision-lab/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nDecision Lab is a schema-first decision operating system for investment, finance, and management judgment.\n\nIt is built for decisions that should not live as vague notes, scattered prompts, or confident one-shot answers. A rough question becomes a structured record with hypotheses, evidence, counterarguments, assumptions, option scoring, a decision memo, review dates, and follow-up reports.\n\n## What You Use It For\n\nUse Decision Lab when you need to decide, defend, review, or learn from a serious call:\n\n- Investment: buy, hold, sell, add, trim, avoid, rebalance, or wait.\n- Business strategy: pricing, product scope, market entry, hiring, budget, positioning, partnerships, or operating priorities.\n- Finance: runway, margin, forecast, headcount, CAC, payback, cash allocation, and sensitivity decisions.\n- Management: owner assignment, commitments, risk reviews, decision debt, review packs, and postmortems.\n\nThe goal is not to make the model sound smarter. The goal is to force a better judgment loop:\n\n1. Frame the real decision.\n2. State the thesis.\n3. Capture evidence.\n4. Generate the opposing case.\n5. Register fragile assumptions.\n6. Compare options against explicit criteria.\n7. Write the memo.\n8. Schedule review.\n9. Learn from the result.\n\n## Public Code, Private Decisions\n\nThis repository is safe to make public as a framework. Your real decision data should usually stay private.\n\nSafe to publish:\n\n- code\n- schemas\n- prompts\n- docs\n- tests\n- workflows\n- sanitized examples\n\nKeep private:\n\n- real `decisions/`\n- raw `research/`\n- generated `outputs/`\n- `.env`\n- `.decision-lab.json`\n- investment theses\n- management assumptions\n- forecasts\n- customer notes\n- model responses that contain private context\n\nBefore using real data, read [docs/public-private-usage.md](docs/public-private-usage.md) and [SECURITY.md](SECURITY.md). For a short first-run path, read [docs/quickstart.md](docs/quickstart.md). To verify the published package from a clean machine, read [docs/smoke-test.md](docs/smoke-test.md).\n\n## Install And Run\n\nDecision Lab is a Node.js CLI. Use Node 22 or newer.\n\nFastest start:\n\n```bash\nnpx @k08200/decision-lab demo decision-lab-demo\ncd decision-lab-demo\nless outputs/run/memo.md\n```\n\nCreate a private local workspace for real decisions:\n\n```bash\nnpx @k08200/decision-lab private-workspace my-private-decisions --owner \"Your Name\"\ncd my-private-decisions\nnpx @k08200/decision-lab decide \"Should we change enterprise pricing this quarter?\" --type business --slug pricing\nless decisions/active/pricing/run/memo.md\n```\n\nIf npm is unavailable, run from GitHub:\n\n```bash\nnpx github:k08200/decision-lab demo decision-lab-demo\n```\n\n## First 10 Minutes\n\nUse this path when you want one real decision to become a working folder. It does not require cloning this repository.\n\nCreate a private workspace:\n\n```bash\nmkdir decision-lab-test\ncd decision-lab-test\nnpx @k08200/decision-lab@latest private-workspace my-decisions --owner \"Your Name\"\ncd my-decisions\n```\n\nCreate your first real decision:\n\n```bash\nnpx @k08200/decision-lab@latest decide \"Should we change enterprise pricing this quarter?\" --type business --slug pricing\n```\n\nThis creates:\n\n```text\ndecisions/active/pricing/decision.json\ndecisions/active/pricing/README.md\ndecisions/active/pricing/run/memo.md\ndecisions/active/pricing/run/brief.md\ndecisions/active/pricing/run/audit.json\ndecisions/active/pricing/run/prompts/*.md\noutputs/decision-lab-backup.json\n```\n\nRead the memo:\n\n```bash\nless decisions/active/pricing/run/memo.md\n```\n\nCapture a missing question without editing JSON by hand:\n\n```bash\nnpx @k08200/decision-lab@latest capture decisions/active/pricing/decision.json --kind question --text \"What evidence would prove this pricing change is too risky?\"\n```\n\nCapture evidence:\n\n```bash\nnpx @k08200/decision-lab@latest capture decisions/active/pricing/decision.json --kind evidence --text \"Three enterprise QBRs mentioned packaging confusion.\" --source \"Customer QBR notes\" --strength medium\n```\n\nRegenerate the operating artifacts:\n\n```bash\nnpx @k08200/decision-lab@latest run decisions/active/pricing/decision.json --out-dir decisions/active/pricing/run\n```\n\nStart the local product UI:\n\n```bash\nnpx @k08200/decision-lab@latest serve decisions --as-of $(date +%F) --token local-dev-token --actor \"Your Name\"\n```\n\nOpen the printed local URL. The UI lets you browse decisions, create records, inspect memo and evidence tabs, add evidence/questions/actions/risks, and open Raw JSON only when you need low-level control. API mutations are logged to `.decision-lab/audit.jsonl`.\n\nIn the memo and UI, read the scores separately:\n\n- Completeness shows whether the record structure is filled in.\n- Evidence Quality shows whether the conclusion is backed by strong, decision-specific, observed evidence.\n- A complete record is not the same thing as a correct decision.\n\n## Developer Checkout\n\n```bash\ngit clone https://github.com/k08200/decision-lab.git\ncd decision-lab\nnpm install\nnpm run verify\n```\n\nFrom a cloned checkout, run commands with:\n\n```bash\nnode bin/decision-lab.js help\n```\n\nIf you create a separate private workspace next to the repo, a convenient pattern is:\n\n```bash\nnode bin/decision-lab.js private-workspace ../my-private-decisions --owner \"Your Name\"\ncd ../my-private-decisions\nnode ../decision-lab/bin/decision-lab.js list-types\n```\n\nCreate a daily operating brief:\n\n```bash\nnode ../decision-lab/bin/decision-lab.js today decisions --out-dir outputs/today/$(date +%F)\n```\n\nThe longer workflow examples below use a cloned-checkout shorthand. From a private workspace next to the repo, set:\n\n```bash\nexport DL=\"../decision-lab/bin/decision-lab.js\"\n```\n\n## Daily Operating Loop\n\nFor actual use, do not treat this as a one-time prompt generator. Treat it like a workbench.\n\n1. Capture the decision.\n\n```bash\nnode \"$DL\" decide \"Should we hire two engineers despite runway pressure?\" --type finance --slug hiring-runway\n```\n\n2. Attach source material.\n\n```bash\nnode \"$DL\" import-evidence decisions/active/hiring-runway/decision.json research/runway-notes.md --report outputs/evidence-import.md\n```\n\n3. Add live updates during the day.\n\n```bash\nnode \"$DL\" capture decisions/active/hiring-runway/decision.json --kind risk --text \"Hiring now may force a rushed fundraise if revenue slips.\"\nnode \"$DL\" capture decisions/active/hiring-runway/decision.json --kind action --text \"Ask finance to validate runway impact by Friday.\"\nnode \"$DL\" capture decisions/active/hiring-runway/decision.json --kind change-mind --text \"If net burn exceeds plan by 15 percent for two months, pause hiring.\"\n```\n\n4. Run pressure tests before committing.\n\n```bash\nnode \"$DL\" checklist decisions/active/hiring-runway/decision.json --out outputs/checklists/hiring-runway.md\nnode \"$DL\" premortem decisions/active/hiring-runway/decision.json --out outputs/premortems/hiring-runway.md\nnode \"$DL\" research-plan decisions/active/hiring-runway/decision.json --out outputs/research/hiring-runway.md\nnode \"$DL\" gate decisions/active --min-score 0.85 --operational --out outputs/gate.md\n```\n\n5. Review the portfolio.\n\n```bash\nnode \"$DL\" today decisions --out-dir outputs/today/$(date +%F)\nnode \"$DL\" weekly decisions --out-dir outputs/weekly/$(date +%F)\nnode \"$DL\" executive decisions --as-of $(date +%F) --out outputs/executive.md\n```\n\n6. Close the loop after the outcome is known.\n\n```bash\nnode \"$DL\" review decisions/active/hiring-runway/decision.json --out outputs/reviews/hiring-runway.md\nnode \"$DL\" close decisions/active/hiring-runway/decision.json --outcome \"Hired one engineer, delayed the second.\" --lesson \"Runway guardrails needed owner sign-off before recruiting opened.\"\nnode \"$DL\" calibration decisions --out outputs/calibration.md\nnode \"$DL\" outcomes decisions --out outputs/outcomes.md\n```\n\n## Common Workflows\n\n### Create Decisions\n\nUse `decide` when you want the shortest real-use path from question to working folder:\n\n```bash\nnode \"$DL\" decide \"Should I add to NVDA after earnings?\" --type investment --slug nvda-add\nnode \"$DL\" decide \"Should we launch annual prepaid discounts?\" --type business --slug annual-discount\nnode \"$DL\" decide \"Should we preserve cash or accelerate hiring?\" --type finance --slug cash-vs-hiring\n```\n\nUse `ask` when you only want a draft JSON file:\n\n```bash\nnode \"$DL\" ask \"Should I buy AAPL now?\" --type investment --out decisions/drafts/aapl.json\n```\n\nUse `inbox` when you have many rough questions in a text file:\n\n```bash\nnode \"$DL\" inbox inbox.txt --type business --owner \"Your Name\" --out-dir decisions/drafts\n```\n\nUse `new` when you want a blank template:\n\n```bash\nnode \"$DL\" new investment --out decisions/drafts/blank-investment.json\nnode \"$DL\" new business --out decisions/drafts/blank-business.json\nnode \"$DL\" new finance --out decisions/drafts/blank-finance.json\n```\n\n### Add Evidence\n\nAdd one claim quickly:\n\n```bash\nnode \"$DL\" evidence decisions/drafts/aapl.json --claim \"Services margin remained resilient.\" --source \"Company filing\" --strength strong --out decisions/drafts/aapl.json\n```\n\nImport a source into an existing record:\n\n```bash\nnode \"$DL\" import-evidence decisions/drafts/aapl.json research/evidence.csv --report outputs/evidence-import.md\nnode \"$DL\" import-evidence decisions/drafts/aapl.json research/customer-notes.md --report outputs/customer-notes-import.md\nnode \"$DL\" import-evidence decisions/drafts/aapl.json research/model.xlsx --report outputs/model-import.md\n```\n\nExtract normalized evidence without attaching it yet:\n\n```bash\nnode \"$DL\" extract-evidence research/customer-notes.md --out research/evidence/customer-notes.json --report outputs/evidence-extract.md\nnode \"$DL\" extract-evidence research/model.xlsx --out research/evidence/model.json --report outputs/model-extract.md\nnode \"$DL\" extract-evidence https://example.com/research --out research/evidence/web-research.json --report outputs/web-evidence.md\n```\n\nSupported evidence inputs:\n\n- CSV\n- TSV\n- JSON\n- Markdown\n- plain text\n- saved HTML\n- PDF\n- XLSX\n- live HTTP(S) URL\n\n### Use AI Safely\n\nDecision Lab can work with external LLMs, but the safe default is patch-first. A role proposes changes. You inspect the patch. Then you apply it.\n\nCreate a role prompt:\n\n```bash\nnode \"$DL\" prompt skeptic decisions/active/pricing/decision.json --out outputs/prompts/pricing-skeptic.md\nnode \"$DL\" prompt all decisions/active/pricing/decision.json --out-dir outputs/prompts/pricing\n```\n\nAsk a model manually, save the response, then parse it into a patch:\n\n```bash\nnode \"$DL\" suggest skeptic decisions/active/pricing/decision.json --response outputs/llm/pricing-skeptic.md --out outputs/patches/pricing.patch.json --review outputs/patches/pricing-review.md\nnode \"$DL\" patch decisions/active/pricing/decision.json outputs/patches/pricing.patch.json --out decisions/active/pricing/decision.json\n```\n\nCall OpenAI directly if `OPENAI_API_KEY` is set:\n\n```bash\nOPENAI_API_KEY=... node \"$DL\" ai-suggest skeptic decisions/active/pricing/decision.json --model gpt-5.2 --out outputs/patches/pricing.openai.patch.json --review outputs/patches/pricing.openai-review.md --raw outputs/patches/pricing.openai.raw.json\n```\n\n`ai-suggest` still saves a patch. It does not silently rewrite your decision record.\n\n### Inspect One Decision\n\n```bash\nnode \"$DL\" validate decisions/active/pricing/decision.json\nnode \"$DL\" score decisions/active/pricing/decision.json\nnode \"$DL\" audit decisions/active/pricing/decision.json\nnode \"$DL\" health decisions/active/pricing/decision.json\nnode \"$DL\" compare decisions/active/pricing/decision.json\nnode \"$DL\" graph decisions/active/pricing/decision.json --out outputs/graphs/pricing.md\nnode \"$DL\" render decisions/active/pricing/decision.json --out outputs/memos/pricing.md\nnode \"$DL\" brief decisions/active/pricing/decision.json --out outputs/briefs/pricing.md\nnode \"$DL\" review-plan decisions/active/pricing/decision.json --out outputs/reviews/pricing-plan.md\n```\n\n### Operate Many Decisions\n\nUse these when the tool becomes a personal or company decision ledger.\n\n```bash\nnode \"$DL\" ledger decisions --out outputs/ledger.md\nnode \"$DL\" status decisions --as-of $(date +%F) --out outputs/status.md\nnode \"$DL\" triage decisions --as-of $(date +%F) --out outputs/triage.md\nnode \"$DL\" next decisions --as-of $(date +%F) --out outputs/next.md\nnode \"$DL\" prioritize decisions --as-of $(date +%F) --out outputs/priorities.md\nnode \"$DL\" commitments decisions --as-of $(date +%F) --out outputs/commitments.md\nnode \"$DL\" dependencies decisions --out outputs/dependencies.md\nnode \"$DL\" owners decisions --as-of $(date +%F) --out outputs/owners.md\n```\n\nReview decision quality and recurring patterns:\n\n```bash\nnode \"$DL\" risks decisions --out outputs/risks.md\nnode \"$DL\" risk-heatmap decisions --out outputs/risk-heatmap.md\nnode \"$DL\" assumptions decisions --out outputs/assumptions.md\nnode \"$DL\" assumption-tests decisions --out outputs/assumption-tests.md\nnode \"$DL\" evidence-scorecard decisions --out outputs/evidence-scorecard.md\nnode \"$DL\" questions decisions --out outputs/questions.md\nnode \"$DL\" hypotheses decisions --out outputs/hypotheses.md\nnode \"$DL\" red-team decisions --out outputs/red-team.md\nnode \"$DL\" scenarios decisions --out outputs/scenarios.md\nnode \"$DL\" sensitivities decisions --out outputs/sensitivities.md\nnode \"$DL\" guardrails decisions --out outputs/guardrails.md\n```\n\nGenerate working packs:\n\n```bash\nnode \"$DL\" today decisions --out-dir outputs/today/$(date +%F)\nnode \"$DL\" weekly decisions --out-dir outputs/weekly/$(date +%F)\nnode \"$DL\" pack decisions --out-dir outputs/packs/$(date +%F)\nnode \"$DL\" executive decisions --as-of $(date +%F) --out outputs/executive.md\nnode \"$DL\" playbook decisions --as-of $(date +%F) --out outputs/playbook.md\nnode \"$DL\" scorecard decisions --as-of $(date +%F) --out outputs/scorecard.md\nnode \"$DL\" monthly decisions --as-of $(date +%F) --out outputs/monthly.md\n```\n\n### Back Up And Restore\n\nCreate a verifiable backup:\n\n```bash\nnode \"$DL\" backup decisions --out outputs/decision-lab-backup.json --report outputs/backup.md\n```\n\nVerify before storing or restoring:\n\n```bash\nnode \"$DL\" verify-backup outputs/decision-lab-backup.json --report outputs/backup-verify.md\n```\n\nRestore to a separate directory:\n\n```bash\nnode \"$DL\" restore outputs/decision-lab-backup.json --out-dir restored-decisions\n```\n\nBackups contain file contents, SHA256 hashes, validation status, and a summary. Restore rejects unsafe paths and requires a verified bundle.\n\n### Local UI And API\n\nRun the local UI:\n\n```bash\nnode \"$DL\" serve decisions --host 127.0.0.1 --port 8787 --as-of $(date +%F) --token local-dev-token --actor \"Your Name\"\n```\n\nGenerate the OpenAPI contract:\n\n```bash\nnode \"$DL\" openapi --server-url http://127.0.0.1:8787 --out outputs/openapi.json\n```\n\nReview create/save mutations:\n\n```bash\nnode \"$DL\" audit-log decisions --out outputs/audit-log.md\n```\n\nThe server is local-first. Use `--token` or `DECISION_LAB_TOKEN` to require `Authorization: Bearer \u003ctoken\u003e` or `x-api-key: \u003ctoken\u003e` for API requests.\n\n### Publish Safely\n\nBefore pushing a public framework repo:\n\n```bash\nnpm run privacy:check\nnode \"$DL\" privacy-check --out outputs/privacy.md\n```\n\nFor a private real-decision workspace, `privacy-check` may intentionally warn or fail because that folder contains the sensitive records you should not publish.\n\nUse this split:\n\n```text\ndecision-lab/           public framework repo\nmy-private-decisions/   private working data, never public\n```\n\n## Decision Record Model\n\nEvery mature decision record is a JSON file. It should answer:\n\n- What decision is actually being made?\n- What is the default action if nobody decides?\n- What thesis supports action?\n- What evidence supports it?\n- What is the strongest opposing case?\n- Which assumptions are fragile?\n- Which options are being compared?\n- Which criteria decide the winner?\n- What would change the recommendation?\n- Who owns the next action?\n- When will the result be reviewed?\n\nCore sections include:\n\n- `decision_frame`: reversibility, urgency, desired outcome, constraints, non-goals, and default action.\n- `hypotheses`: thesis statements with assumptions, evidence, counterarguments, and disconfirming signals.\n- `options`: possible actions with upside, downside, risks, and reversibility.\n- `decision_criteria`: weighted criteria that define a good decision.\n- `option_scores`: scored comparison across the criteria.\n- `assumption_register`: fragile assumptions, tests, owners, and deadlines.\n- `risk_register`: risks, triggers, mitigations, owners, and severity.\n- `post_decision_review`: review date, success metrics, learning questions, and final outcome.\n\n## Decision Types\n\n`general` is the shared base for serious decisions.\n\n`investment` adds asset, portfolio context, valuation, catalysts, position sizing, and risk controls.\n\n`business` adds strategic goal, stakeholders, customer impact, financial impact, pilot design, execution plan, and operating cadence.\n\n`finance` adds financial hypothesis, model driver, planning horizon, runway, scenarios, sensitivity checks, and guardrails.\n\n## Role Chain\n\nThe same record can be reviewed by several roles:\n\n- `analyst`: strengthens the thesis and identifies missing evidence.\n- `skeptic`: breaks the thesis and finds hidden assumptions.\n- `cfo`: translates the decision into financial impact and opportunity cost.\n- `ceo`: judges strategy, timing, and long-term compounding value.\n- `operator`: turns the decision into owners, milestones, kill criteria, and execution cadence.\n- `risk`: maps fragile assumptions, downside correlation, and early warning indicators.\n- `recorder`: writes the final auditable memo.\n\n## Repository Shape\n\n```text\n.decision-lab.json    optional local defaults\nbin/                  CLI entrypoint\nsrc/                  validation, scoring, audits, workflow, rendering, server, backup, import\nschemas/              JSON schemas for decision records\nprompts/              reusable role prompts\nexamples/             sanitized investment, business, finance, and reviewed records\ndocs/                 operating system, CLI reference, playbooks, architecture, and commercialization notes\ntest/                 Node test runner coverage\ndecisions/            local private decision records created by init/private-workspace\nresearch/             local private source material\noutputs/              rendered memos, reports, exports, backups, and packs\n```\n\nThe public repo tracks only placeholders for `decisions/`, `research/`, and `outputs/`.\n\n## Commercial Readiness\n\nDecision Lab is currently strongest as a local-first product, internal decision workbench, founder operating system, or portfolio-quality open-source CLI. It includes:\n\n- one-step decision capture\n- local UI\n- API contract\n- token auth\n- audit logs\n- verifiable backups\n- restore workflow\n- privacy checks\n- evidence import\n- decision reports\n- operating packs\n- commercial readiness assessment\n\nCheck readiness:\n\n```bash\nnode \"$DL\" readiness --out outputs/readiness.md\n```\n\nFor hosted SaaS, the missing pieces are mostly outside this local repo: accounts, teams, permissions, billing, hosted storage, deployment, observability, and compliance operations. See [docs/commercialization.md](docs/commercialization.md).\n\nFor a more direct product scorecard and recommended build order, see [docs/product-assessment.md](docs/product-assessment.md). For operating and release procedures, see [docs/runbook.md](docs/runbook.md).\n\nFor npm packaging and public distribution steps, see [docs/distribution.md](docs/distribution.md).\n\n## Development\n\nInstall dependencies:\n\n```bash\nnpm install\n```\n\nRun the full verification suite:\n\n```bash\nnpm run verify\n```\n\nRun security and package checks:\n\n```bash\nnpm run security:audit\nnpm run pack:check\nnpm run publish:dry-run\n```\n\nUseful development commands:\n\n```bash\nnpm test\nnpm run check\nnpm run demo\nnpm run example:weekly\nnpm run example:executive\nnpm run example:playbook\n```\n\n## Full Command Reference\n\nFor the complete command catalog, run:\n\n```bash\nnode bin/decision-lab.js help\n```\n\nOr read [docs/cli-reference.md](docs/cli-reference.md).\n\n## Philosophy\n\nGood judgment is not just a better answer. It is a better loop.\n\nDecision Lab is built to fight:\n\n- confident but unsupported recommendations\n- decisions that never state assumptions\n- hidden downside that appears only after commitment\n- evidence that never gets linked to claims\n- no postmortem loop, so judgment never compounds\n\nThe record should always make these questions visible:\n\n- What must be true?\n- What is the strongest opposing case?\n- What evidence would change my mind?\n- Which option wins under explicit criteria?\n- How will I know later whether this was a good decision?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk08200%2Fdecision-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk08200%2Fdecision-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk08200%2Fdecision-lab/lists"}