Codync
무료 오픈소스 1:1 대안, Grok Bot과 Muse 대신
요구마다 근거를 인용하고 영향과 추적을 검사하는 명세 저장소
Simplified epistemic spec repo: every requirement says 'because' and cites the facts or assumptions it rests on. One script checks, traces impact and renders to Markdown/Gherkin.
개발 도구JavaScript · PythonGitHub @jvanheerikhuize온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Specs for agentic software development that are honest about what they know.
Most specs mix verified truths with guesswork and never say which is which. Here, every requirement says because and names the facts or assumptions it rests on. What nobody can answer yet is written down as an open question, so the gap is visible instead of guessed. A check makes sure that no requirement is more certain than its grounds.
Facts → requirements → specs.
This is the simplified version of the original engine, which is kept in the target_state branch. It keeps the same principles with 5 record types instead of 10 and one script instead of a toolchain.
Each picture adds one idea to the one before.
Facts → requirements → specs. A requirement holds only if the facts it rests on hold, and a spec holds only if its requirements hold. A spec is therefore never more certain than the least certain thing underneath it, and an unanswered question is less certain than any assumption, because there is not even a guess to test. Everything else in this repo (the because links, the open questions, the provisional/broken statuses, the impact trace) follows from this.
It is an axiom, so it is stated here to be checked, not taken on faith:
FCT and ASM here.flowchart LR
ASM["Assumption (ASM)"] -->|"validated, promoted to"| FCT["Fact (FCT)"]
FCT -->|"because"| REQ["Requirement (REQ)"]
ASM -.->|"because (provisional)"| REQ
QST["Open question (QST)"] -.->|"blocks (provisional)"| REQ
FCT -->|"answers"| QST
ASM -.->|"answers"| QST
REQ -->|"grouped into"| SPC["Spec (SPC)"]
SPC -->|"render"| OUT["Markdown / Gherkin / ..."]
| Record | Means | Statuses |
|---|---|---|
ASM Assumption | Something we believe but have not proven, with a plan to validate it | open → validated (promoted to a fact) or invalidated |
FCT Fact | Something we know, with evidence | active, deprecated |
QST Question | A gap with no candidate answer yet. It blocks requirements or specs until it is answered_by a fact or assumption | open → answered |
REQ Requirement | What the system MUST/SHOULD do, because of facts/assumptions, with Given/When/Then acceptance | provisional, active, broken |
SPC Spec | A group of requirements, either the walking skeleton or a feature on top of it | draft, active |
provisional. If that assumption is refuted, the requirement is broken. Only requirements resting on facts can be active.provisional, and rendered specs list it next to the requirement, so an implementing agent asks instead of guessing.records/, with a stable ID and links in YAML front matter. This gives clean diffs, no merge conflicts, and files agents can read easily.skeleton spec delivers the end-to-end core, and feature specs depends_on it. When a fact changes, impact lists the specs to rebuild in that order.pip install -r requirements.txt
python tools/spec.py check --strict # links, epistemic gates, open questions, spec DAG
python tools/spec.py impact FCT-0001 # what to revisit when FCT-0001 changes
python tools/spec.py render --tier skeleton # write dist/SPC-*.md
python tools/spec.py render --format gherkin # write dist/SPC-*.feature
python tools/spec.py index # write site/data/index.json for the workspace
python -m unittest discover -s tests # one test per acceptance scenario
Example output:
18 records · 0 errors · 0 warnings
SPC-0001 [skeleton] 100% ready Record graph and epistemic check
SPC-0002 [feature ] 0% ready Rendering and guardrails
https://jvanheerikhuize.github.io/asdlc-meta-specs/ is a small static site in site/ (one HTML page, one script, no build step). It is rebuilt and deployed on every push to main.
Local preview: python tools/spec.py index && python -m http.server -d site 8000.
To enable Pages on a fork: Settings → Pages → Source: GitHub Actions.
Copy a record of the same type, take the next free ID, name the file <ID>-<slug>.md, and run check.
---
id: REQ-0008
title: Short, behavioural title
status: provisional # open assumption in `because` → provisional
because: [FCT-0001, ASM-0002]
---
## Statement
The system MUST ...
## Acceptance
- Given ...
- When ...
- Then ...
To validate an assumption: add a FCT with evidence and promoted_from: ASM-xxxx, then set the assumption to status: validated with promoted_to: FCT-xxxx. The check then asks dependent requirements to cite the fact instead, after which they can become active.
To ask a question: add a QST with status: open and blocks: [REQ-xxxx]. Everything it blocks stays provisional (requirements) or draft (specs) until it is answered. To answer it, record the answer as a fact or an assumption, set the question to status: answered with answered_by: <that ID>, and add the answer to the because of each requirement it blocked. The workspace lists these edits for you.
The records in records/ are the spec for this repository. The skeleton (SPC-0001) is fully grounded in facts and active. The feature spec (SPC-0002) is still draft, because its requirements rest on three open assumptions and one open question (QST-0002: which formats do the agent tools we target actually read?). That is the point: the spec shows where its own knowledge stops.
records/ all records, one file each (ASM, FCT, QST, REQ, SPC)
tools/spec.py check · impact · render · index
site/ the Pages workspace (index.html, app.js, styles.css)
docs/concepts/ the six pictures above
ROADMAP.md from this starting point to the target state
tests/ one test per acceptance scenario
This repository is the starting point. The full original engine is kept in the target_state branch, and ROADMAP.md explains how to grow towards it: one evidence-backed step at a time.