2026-10-28: 기존 미통합 변경을 보존하고 1.0 잔여 작업을 재개했다. 독립 포팅 검사의 실패를 모두 모으는 실행부를 로컬 구현·회귀 검증했다. main push·전체 앱 동등성·1.0 출시는 미완료다. 현재 상태와 검증 기록을 따른다.
프론트엔드가 필요한 데이터와 동작을 정형화해 표현하면 서버가 정책과 계약에 따라 실행하는 프레임워크. 애플리케이션별 백엔드 반복 구현과 프론트·백엔드 계약의 이중 유지보수를 최소화한다.
Describe your application once.
AIP는 백엔드 서버를 없애려는 것이 아니다. 기능마다 반복되는 Controller·DTO·Validation·Service·Repository·권한·트랜잭션·오류 처리·API 문서 작성을 표준화된 컴파일러와 런타임으로 옮겨, 애플리케이션별 백엔드 구현 코드를 극단적으로 줄이려는 것이다. 비즈니스 규칙을 정하고 바꾸는 책임은 여전히 개발자에게 있다.
2026-10-05 사용자 요청으로 운영 인증·일반 마이그레이션·본 crates/ 제품 조립을 구현 범위에 포함했다. aip service가 검증된 caller 정의와 기존 read/apply·worker·SDK 엔진을 사용한다. 앱마다 새 endpoint를 만드는 구조로 바꾸지 않는다.
- 시작 가이드: 빈 디렉터리에서 정의 하나를 배포하고 인증된 읽기·쓰기를 실행하기까지. 명령은 실제 실행해 확인했다.
- 앱 패키지 설치·변경배포, Docker·네이티브 서비스, 독립 앱 예제 두 개: 앱별 release 산출물에서 기존 제품 엔진을 실행한다.
- 제품 서비스: check/gen/init/adopt/migrate/serve/principal, 운영 설정과 실행 절차.
- 운영 인증: RS256 API access token, 공개 JWKS, 서버의 지속 actor 연결과 폐기.
- 일반 마이그레이션: 변경 계획, 정형 backfill/convert, 실제 DDL 트랜잭션과 배포 저널. 기존 데이터 이관은 prototype 구조 marker를 검증한다.
- 설치 SDK: 기존 TypeScript 엔진을
@aip/sdk로 offline 설치하고 생성 binding과 함께 사용한다. - 검증 절차와 보완 목록: 새 checkout 준비, 반복 검증 명령, 자동 검증 범위와 남은 확인 항목.
- 1.0 릴리스 게이트 증거: 새 clone 전체 회귀, 묶음 smoke, 이전 릴리스 업그레이드·롤백 실행 기록과 한계.
- 제품 검증 결과와 최신 macOS 실행 묶음: 실제 JWT·PostgreSQL·설치 SDK·두 wire·Node/Python 확장 실행.
- 정의 한계와 정책 실행 한계: 입력·AST·predicate 확장·SQL·복제 payload의 상한을 함께 검사한다.
- 제품 문법 보완: 다섯 작성 형식의 선언 일치, Date·Email·정밀 Decimal, 정원 제약과 공식 SDK 연결. 공개 백엔드 규칙 대조는 실행한 범위와 남은 제약을 구분한다.
- 백엔드 기능 포괄성 감사 기준: SQL 외 비동기·이벤트·외부 연동·파일·실시간·운영까지 후속 보완의 원문 기준. 현재 단계는 분석·고도화 제안이며, 기존 PoC 기능을 제품 지원으로 합산하지 않는다.
- 백엔드 기능 포괄성 감사 A~F: 105개 최소 항목·SQL 밖 여섯 시나리오·독립 상호 검토·실행 반례. 현재 단계는 분석과 고도화 제안이다.
Core 검증은 GitHub Actions Ubuntu에서 실행한다. Linux worker 격리와 durable job smoke도 Bubblewrap을 적용해 확인했다(검증 결과). macOS Seatbelt 동작, 외부 IdP 계정, TLS reverse proxy의 실제 배포 검증은 별도 환경이 필요하다. 로컬 제품 실행 검증은 macOS의 실제 PostgreSQL과 통제된 HTTPS/JWT fixture를 사용한다. 대형 테이블 무중단 변경, 자동 역방향 migration, 최종 Id 표현·쓰기 조합 선택은 범위 밖이다.
.aipoc (PoC 작성 언어) ─▶ AST ─▶ 의미 분석 ─▶ Core IR (언어 독립, 결정적) ─▶ 실행 계획 (SQL 고정) ─▶ 런타임
└─▶ 계약(/aip/describe) · 생성 클라이언트
| crate | 역할 |
|---|---|
aip-syntax |
lexer, parser, 진단 |
aip-sema |
이름 해석, 타입, 정적 규칙, Core IR 하강 |
aip-ir |
Canonical Semantic IR(Core IR) 타입, 직렬화, digest, 구조 검증 |
aip-plan |
실행 계획 타입 |
aip-contract |
공개 계약, TS 클라이언트 생성, 호환성 비교 |
aip-pg |
PostgreSQL 백엔드: DDL과 실행 계획 생성 |
aip-runtime |
HTTP, 트랜잭션, 잠금, outbox, 멱등, 타이머, job, webhook, rule. aip-cli의 선택적 feature poc-runtime일 때만 포함 |
aip-cli |
aip check / core / ddl / ir / explain / contract / gen-ts / service …. run / migrate / rekey / token은 --features poc-runtime 빌드에서만 동작 |
2026-10-15 후속: 페이스리뷰 댓글 적용 시험을 기존 PostgreSQL 채택·설치 TS SDK·Python helper 경로에 추가했다. 시험에서 발견한 생성 입력의 range 누락을 수정하고 생성·patch·expect의 scalar 검증을 통합했다. 페이스리뷰 원본 MySQL/Mongo 서비스 이식과는 구분한다. 이번 실행 결과는 제품 검증에 있다.
2026-10-14 후속: 일반·부분 수정을 공개 전이의 patch로 표현한다. 기존 필드 타입·검증·행 인가를 적용하고, expect 조건·서버 version 증감으로 동시 편집 충돌을 검출한다. 기존 /apply의 transaction·effect·notify·멱등 복구·TS 생성 계약을 공유하며 service gen --lang python은 공개 apply 입력 TypedDict와 helper를 생성한다.
2026-10-13 후속: durable job이 선언한 resource에 한해 업무 데이터를 읽고 공개 전이를 실행한다(ctx.data.read/apply, 전이와 effect journal이 한 transaction). 서비스 설정만으로 cron 스케줄, 서명 검증 webhook 수신, 전이 notify outbox 행을 서비스 주체 job으로 연결하고, /health·/ready probe를 제공한다. 현재 105개 항목 판정과 남은 갭은 기능 갭 표를 따른다.
2026-10-10 후속: resource 독립 동기 operation을 제품 경로에 연결했다. 업무 resource 없는 신원·typed SDK·capability 발견과 실행 전후 인가를 제공한다. 다음 durable Job 구조 제안은 아직 미구현이며 기존 PoC Job과 구분한다. 검증 결과와 제한은 제품 검증을 따른다.
제품 서비스 통합 및 실행 검증 중(2026-10-05). 기준은 창시자 통합 지침이며 결과물은 plan-docs A~E에 있다. 자체 포트 AIP 서버+공식 프론트 라이브러리, Rust 엔진, JS/TS·Python 확장, 선택적 구조화 설명·개발 검증이 제품 기준이다.
기존 aip check/run/gen-ts 등의 PoC Core IR 경로는 보존한다. 새 제품 진입점은 aip service이며 caller read/direct apply 정본을 사용한다. 독립 spike의 검증된 엔진을 path dependency로 재사용한다. .aip 파일 여부와 최종 문법·쓰기 조합 선택은 이번 조립만으로 확정하지 않는다. 확장자는 언어마다 하나다: 제품 정의 언어(resource·expose·transition, aip service가 읽는다)는 .aip, PoC 언어(entity·command·query, aip check 등이 읽는다)는 .aipoc다.
이전 단계의 실행 프로토타입은 기존 엔진의 check/gen/init/serve와 단일 생성 SDK를 연결했다. source/package × 두 Id 후보의 정의 변경4개, READ8개·WRITE8개·실제 Chrome8개·재배치 bundle8개 흐름을 실행했다. 후속 DB driver 소유권·SQL stage 기한·실제 catalog 구조 검사·SDK 미확정 재시도 보존을 연결했다. 실제 커밋 응답과 다음 재시도 응답을 멈춰도 같은 key로 복구하며 중복 worker 실행을 막았다. 실행 중 세션이 만료돼도 이미 커밋한 WRITE의 성공 결과를 보존한다. 정의 숫자·중첩 진단, 쓰기 완료와 캐시 저장 사이의 경쟁 조건, CLI 출력 소비자 종료 처리도 보완했다. 최신 Rust175개(V1 포함)·SDK/패키지47개·builder5개는 실패0이며 명령과 한계는 DB 후속 결과를 따른다. 최신 실행 bundle을 제공한다. 이 수치와 bundle은 이전 단계의 검증이다. 현재 제품 경로의 인증·일반 migration·명시적 prototype 이관·SDK 설치 결과는 위 제품 문서를 따른다. 구조 지문이 없는 구형 marker-only schema를 자동 채택하지 않는다.
별도 spikes/에서 V1부터 V15까지 후보를 실행했다. 최신 V15 결과는 공개 Url·Enum·Time 필터와 리터럴 접두어 검색을 실제 읽기·쓰기 검사에 연결한다. V14 결과는 공개 전이의 입력/결과를 생성 타입에 연결하고 잘못된 성공 응답을 pending으로 보존한다. V13 결과는 큰 Id 반올림으로 다른 행을 변경하는 반례를 재현하고 숫자 제한·십진 문자열 후보를 비교했다. 처음부터 쓰기를 호출하는 계약 불일치도 DB 전에 거부한다. V12 결과는 앱별 생성 계약의 선택형 타입을 실제 HTTP·캐시 SDK에 연결하고 계약 불일치를 저장 전에 검사한다. V11의 선택적 개발 조언·필수 검사 분리도 유지한다. V10의 같은 사용자 세션 복구도 유지한다. V9의 캐시 수명·시간 의존 조회 경계도 유지한다. 최종 계약 결정은 남아 있다.
PoC 현황: Rust 구현이 네 예제(examples/ariari, shop, saas, cms)를 실제 PostgreSQL에서 e2e로 실행한다. 정의는 PoC용 임시 프런트엔드인 .aipoc 텍스트로 쓰고, 백엔드는 언어 독립 의미 표현(aip-ir)만 읽는다. 진행 기록은 docs/design/09-verification-log.md, 결정 상태는 docs/DECISIONS.md.
export PATH="$HOME/.cargo/bin:$PATH"
cargo test -q --workspace # AIP_TEST_DATABASE_URL / AIP_TEST_ADMIN_URL 필수 (전용 고포트 PostgreSQL)
cargo test -q -p aip-cli --features poc-runtime # PoC runtime e2e(run/migrate 등)는 이 feature가 필요
./target/debug/aip check examples/ariari/app.aipoc
./target/debug/aip core examples/ariari/app.aipoc --digestMIT. LICENSE를 따른다(D-A27).
| 문서 | 내용 |
|---|---|
docs/origin/ |
아이디어 원문: 설계 초안, 전체 맥락 인계, 설계 철학 인계(2026-10-01) |
docs/PRINCIPLES.md |
최신 창시자 원칙과 설계 관문. 원문은 plan-docs/sources |
docs/DECISIONS.md |
결정 기록 (Accepted / Proposed / Open / Rejected) |
docs/design/00-strategy.md |
진단, 방침, 포지셔닝, 전제와 뒤집을 신호 |
docs/design/01-reality-test.md |
실제 케이스 15개(아리아리 운영 코드 12 + 커머스 3), 확인된 결함 |
docs/design/02-language.md |
의미 하강 탑(L3→L2→L1→L0), Core 구성요소, 도메인 형식 |
docs/design/03-ir.md |
Core IR 설계, 효과 서명, 분석 의무 |
docs/design/04-safety-matrix.md |
정적/부팅/런타임/보장 불가 분류 45항목 |
docs/design/05-execution-model.md |
query/command 실행 단계, 잠금 순서, saga, outbox, 캐시, 시간 |
docs/design/06-extensions.md |
extension 계약, 안전 경계, 1st-party 9종 |
docs/design/07-architecture-and-roadmap.md |
ADR-001(구현 언어), 저장소 구조, M0-M6 |
docs/design/08-coverage-catalog.md |
백엔드 케이스와 문법 매핑 |
docs/design/09-verification-log.md |
검증 회차별 기록과 open issue |
docs/design/10-philosophy-alignment.md |
설계 철학 대비 현재 구현 검토, 구조적 문제, 다음 단계 |
docs/design/11-founder-intent-audit.md |
창시자 의도 대비 감사 |
docs/design/12-design-reset.md |
설계 재개 계획 |
spec/grammar.md |
현재 PoC .aipoc 문법 (EBNF). 최종 작성 형식 여부는 미정 |
spec/definition-syntax.md |
제품 경로(aip service)가 읽는 정의 언어의 작성 카드. PoC 언어(.aipoc)와는 다른 언어이고 확장자도 다르다. 블록·키·가정하지 않는 기본값·작성 예. 생성 문서 |
spec/definition-diagnostics.md |
제품 정의 진단 코드(DEF.*)와 고치는 방법(aip explain-code). 생성 문서 |
spec/wire-errors.md |
제품 HTTP API 오류 코드(WIRE.*)와 재시도 지침. 생성 문서 |
spec/client-errors.md |
SDK(TypeScript·Python)가 스스로 올리는 오류 코드(CLIENT.*). 생성 문서 |
spec/diagnostics.md |
PoC 진단·오류 코드(POC.*). 생성 문서 |
오류 코드는 모두 영역.이름 형식이다(DEF, WIRE, CLIENT, POC). aip explain-code <코드>와 aip diagnostics [--area ...]가 네 영역을 함께 조회한다.
spikes/spike-0-ts/는 첫 iteration의 TypeScript 스파이크다. 설계 판단의 근거로 보존하며 본 구현의 출발점은 아니다.
aip contract <program.aipoc>는 JSON 한 줄을 출력한다. 사람이 읽을 때는 --pretty를 붙인다. 공통 오류 정의는 최상위 errors 배열에 있고 각 query·command·subscription의 errors 배열은 해당 정의의 인덱스를 참조한다. 이 명령은 PoC 언어의 계약 출력이며 제품 언어의 생성 binding은 aip service gen을 사용한다.
2026-10-14: UUID Id·기존 운영 PostgreSQL 채택을 추가했다. 숫자 Id/owned schema 기본을 유지하며 service introspect·adopt-external이 별도 AIP schema의 매핑 view·구조 검증으로 기존 테이블을 사용한다. 외부 인프라 연결 목록과 검증 제한을 함께 확인한다.
2026-10-24 가입 후속 실패 조사: Verify40068996762/68cdf25는 step15 failure다. 첫계정 signup 화면·정확POST201/신규·기존checkEmail/3finished·오류0 및 PNG2개는 확인했으나 DB의 장르일치·무관행보존이 false여서 tutorial/skip/admin에 도달하지 못했다. ENUM문자정렬 및 snapshot text/binary 프로토콜 불일치를 고쳤다. 실제 RowDeserializer로 같은1의 Bytes/Int 차이를 로컬재현했고 clippy5.92s/no-runcompile6.59s/evidence unittest52/fmt/diff는 통과했다. 실제DB 재검증 전이며 관련25경로행은 유지한다. 앞단 password/email/profile/reissue/like/comment/search JSON만 성공재확인, admin은 이번실행 미검증. 원본UI·정책·browser script 불변. 상세는 STATUS·VERIFICATION 최신절.
2026-10-24 튜토리얼 reload 후속: Verify40072496940/ef828ac은 step15 failure다. 첫계정 signup 전gate·DBboolean true/3finished와 PNG2개를 확인했고 직전 장르·11테이블보존 실패는 재발하지 않았다. Complete는 step1/2/3·정확단일mutation·main 복귀와 DB보존/active2 revoked0까지 확인했으나 reload_main line214에서 실패(17requests/14finished/unfinished3/pageerror0), skip/admin 미도달이다. 고정UI의 persist가 tutorial을 제외하는데 localStorage를 기다린 판정기 오류를 RED→GREEN으로 재현·수정했다. Reload시 원본App이 재조회한 메모리store의 본인tutorial1을 검사하고 유한fade후PNG를 캡처한다. Local unittest53/AST/JS syntax/diff만 확인, 새실DB/browser는 미검증. 원본UI·overlay제품코드·DB보존조건·lifecycle 잣대 불변이며 관련25행은 유지한다. STATUS·VERIFICATION 최신절 참조. WBS90/25·전수미완·model.h5/visitor보류 유지.