learning artifact

canvas는 페이지 생성기가 아니라 artifact 비행 절차다.

이 설명서는 feno-canvas를 “보고서 하나 예쁘게 만드는 도구”가 아니라, 자체 완결 HTML을 설계하고 검증하고 버전 등록하고 Cloudflare Pages에 올리는 작은 운항 시스템으로 읽게 만든다.

type: learning family: Field Manual lane: offline-safe signature: Publish Rail
feno-canvas publish flow Brief, design contract, build, validate, register, and Cloudflare publish steps. Brief start here Design type, family, lane Validate strict guardrail Pages published URL fallback path: T0 local artifact when credentials or wrangler are unavailable

decision router

무엇을 만들지 먼저 고른다.

feno-canvas의 첫 결정은 디자인 취향이 아니라 정보 계약이다. 목적을 고르면 적합한 type, family, lane이 정해진다.

brief before shell
TYPElearning
FAMILYField Manual
LANEoffline-safe
SIGNATUREPublish Rail

publish path

Cloudflare 버전은 ship이 책임진다.

현재 manager의 실행 경로는 strict 검증을 통과한 파일을 manifest에 등록하고, 설정이 완성되면 Pages Direct Upload로 배포한다. 설정이 없으면 실패가 아니라 로컬 등록으로 내려앉는다.

T1 with T0 fallback
01 sourcedocs/outputs/canvas/*.htmlsingle file
02 validatestrict CSP + local artifact rulesguarded
03 register.feno_canvas_manifest.jsonversioned
04 mirror_deploy/<id>/index.htmlprepared
05 publishCloudflare Pages Direct UploadT1

validator wall

좋아 보이는 것보다 통과 가능한 것이 먼저다.

feno-canvas의 검증은 보안 경계 그 자체는 아니지만, artifact가 독립적으로 열리고 안전하게 배포되도록 강하게 좁힌다.

fail closed
local first

외부 의존성은 기본 금지

offline artifact는 외부 script, stylesheet, image URL 없이 움직여야 한다. online lane도 검증된 CDN과 무결성 조건이 필요하다.

CSP

인라인은 허용하되 통제한다

style과 script는 파일 안에 둔다. 위험 sink, inline handler, meta refresh, unsafe scheme은 validator가 막는다.

favicon

아이콘 채널은 PNG 하나만

favicon은 data:image/png;base64 형식, PNG magic, 크기 제한을 통과해야 한다. SVG favicon은 별도 sanitizer 전까지 막는다.

Dosemantic HTML, print stylesheet, artifact-state, visible status metadata, reduced-motion handling
Docopy-back prompt, native tabs or filters, inline SVG diagram, Cloudflare fallback note
Blockexternal URLs in offline output, unsafe URL schemes, event handler attributes, broad secret reads
Blockpublishing without complete CANVAS_CF credentials or a working wrangler path

copy-back recipes

다음 요청은 이렇게 주면 된다.

아래 프롬프트는 artifact의 목적, 타입, lane, 검증 조건을 같이 넘긴다. 버튼을 누르면 같은 영역에 바로 채워진다.

python3 docs/products/skills/feno-canvas/scripts/feno_canvas_manager.py validate docs/outputs/canvas/candidate.html --strict-csp python3 docs/products/skills/feno-canvas/scripts/feno_canvas_manager.py ship docs/outputs/canvas/candidate.html --id feno-canvas-flight-manual --title "feno-canvas Flight Manual"

pre-flight checklist

Cloudflare 출격 가능성을 손으로 확인한다.

세 가지가 모두 충족되면 T1 배포가 가능하다. 하나라도 빠지면 산출물은 로컬 manifest에 남고 T0로 보고된다.

publish readiness Local fallback
T0