惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
News and Events Feed by Topic
S
Security @ Cisco Blogs
S
Secure Thoughts
Attack and Defense Labs
Attack and Defense Labs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
博客园 - 叶小钗
H
Heimdal Security Blog
Microsoft Security Blog
Microsoft Security Blog
Forbes - Security
Forbes - Security
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
罗磊的独立博客
Application and Cybersecurity Blog
Application and Cybersecurity Blog
爱范儿
爱范儿
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
D
DataBreaches.Net
Recent Announcements
Recent Announcements
Schneier on Security
Schneier on Security
C
Cisco Blogs
美团技术团队
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
月光博客
月光博客
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
H
Hackread – Cybersecurity News, Data Breaches, AI and More
A
Arctic Wolf
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店 GitHub - EdoardoBambini/Agent-Armor-Iaga: AI agents are getting tool access — shell, file system, databases, APIs, secrets. But **nobody is governing what they actually do with it**. Frameworks like LangChain, CrewAI, AutoGen, and Claude Code give agents the power to execute. Agent Armor gives you the power to control, audit, and approve every single action before it happens. HN Vibes — Week 15, Apr 7–13 2026 GitHub - chojs23/ec: Easy terminal-native 3-way git mergetool vim-like workflow GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - JakOb-dotcom/cloud-sandbox-security-analysis: Technical analysis and Proof of Concept (PoC) regarding environment variable exfiltration in containerized cloud sandboxes via side-channel data leaks. Springboards - Flint Alpha Show HN: A simpler coding agent harness GitHub - audiodude/sudomake-friends GitHub - 256thFission/mini-mythos: OSS clone of Anthropic’s Mythos harness to locate C/C++ memory vulnerabilities Show HN: OpenParallax: OS-level privilege separation for AI agent execution Hacker News Sorted - Chrome 应用商店 Show HN: How to Install Docker on Ubuntu 24.04 LTS: Complete 2026 Guide GitHub - himanshudongre/smriti GitHub - sverrirsig/claude-control: macOS desktop dashboard for monitoring and managing multiple Claude Code sessions GitHub - ory/dockertest: Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work. Chiral - Chrome 应用商店 Show HN: Two Claudes collaborating through shared memory on a $100 mini-PC GitHub - pmichaillat/latex-cv: Minimalist LaTeX template for academic CVs GitHub - oguzbilgic/posse: A web UI for Anthropic Managed Agents. GitHub - sshiraz/depsly: Dependency risk analysis tool for npm packages ABI Add safari/agent-harness — Safari browser automation via safari-mcp by achiya-automation · Pull Request #212 · HKUDS/CLI-Anything GitHub - Halfblood-Prince/trustcheck: Verify PyPI package attestations and improve Python supply-chain security GitHub - oguzbilgic/kern-ai: Agents that do the work and show it. GitHub - bruits/satteri: High-performance Markdown and MDX processing for the JavaScript ecosystem GitHub - tylergibbs1/feedstock: High-performance web crawler and scraper for TypeScript, powered by Bun and Playwright GitHub - Grimm67123/grimmbot: The self-improving sandboxed and open-source AI agent. With persistent memory and scheduling. GitHub - whitevanillaskies/whitebloom: Local whiteboard that blooms. GitHub - hwdsl2/docker-whisper: Docker image for a self-hosted Whisper speech-to-text server with speaker diarization and OpenAI-compatible transcription and translation APIs. Powered by faster-whisper. Supports all Whisper models, NVIDIA GPU (CUDA) acceleration, JSON/SRT/VTT output, SSE streaming, offline mode, and multi-arch (amd64, arm64). GitHub - yisding/reviewwiggum GitHub - MarwanAlsoltany/serrors: Structured errors for Go: sentinel hierarchies, typed data, custom formatting, and slog integration. GitHub - soatok/age-php GitHub - Luthiraa/markitme GitHub - stagas/rtdiff: realtime git diff gui and AI-assisted commits GitHub - tombedor/excalicharts GitHub - wh1le/excalidraw-edit: Open and edit .excalidraw files from the terminal. Offline, auto-saves to disk. MalExt Sentry - Malicious Extension Scanner - Chrome 应用商店 GitHub - syi0808/asciianimesvg: Generate animated ASCII art SVGs from text. CLI, Rust library, WASM, and web editor. GitHub - zaina-ml/ml_forge: A visual-based graph node editor for training computer vision models. GitHub - anakin87/llm-rl-environments-lil-course: 🌱 A little course on Reinforcement Learning Environments for evaluating and training Language Models GitHub - takaakit/superpowers-uml: Superpowers-UML modifies Superpowers to ensure a software development workflow in which AI agents design through UML modeling. AdriByte Studio - Sviluppo Web e Soluzioni Digitali GitHub - chouligi/angel-copilot: Your personalized Angel Investment Advisor Show HN: MoodSense AI (ML and FastAPI and Gradio, Deployed on Hugging Face) Moodsense Ai - a Hugging Face Space by aman179102 GitHub - agenteractai/lodmem: Level Of Detail Context Management for Agents GitHub - ostefani/subnetlens: A fast, concurrent network scanner with a TUI and plain-text CLI, built in Go. It discovers live hosts on your network, scans their open ports, resolves hostnames, and fingerprints operating systems—delivered. Cyber Pulse: Agentic Intel - Apps on Google Play Whisper API: Self-Hostable Speech to Text Transcription The Agent-Web Protocol Stack: A Research Thesis GitHub - msmarkgu/RelayFreeLLM: A restful API designed to route user prompts to various AI model providers. Show HN: Provepy – A Python decorator that proves your code using Lean and LLMs Show HN: Pardonned.com – A searchable database of US Pardons GitHub - patrickdappollonio/dux: Dux is a terminal UI that lets you run multiple AI coding agents side by side, each in its own git worktree, with full companion terminals, macros, commit generation, and a command palette that knows more tricks than you do. kMC Crystal Simulator Show HN: HyperFlow – A self-improving agent framework built on LangGraph GitHub - stef41/vibescore: 🎵 Grade your vibe-coded project. One command, instant letter grade across security, quality, dependencies, and testing. GitHub - stef41/lmscan: 🔍 Detect AI-generated text and fingerprint which LLM wrote it. Open-source GPTZero alternative. Zero dependencies, works offline. imgur.com GitHub - visionscaper/collabmem: Enabling long-term collaboration with Agentic AI - building up episodic and world model memory over time with in-context awareness 在 Steam 上购买 FriedrichAI: Offline AI 立省 10% GitHub - atripati/ark: AI Runtime Kernel — a context operating system for AI agents. Eliminates tool bloat, loads only what’s needed, and gives LLMs their reasoning space back. GitHub - nowork-studio/toprank: Open-source Claude Code skills for SEO, SEM, Google Ads GitHub - tacomanator/sash: Lightweight macOS menu bar app for reliably cycling through windows of the current application. Appents | Social Media Management for Product-First Teams GitHub - pnhoang/youtube-spam-blocker: Automatically detects and hides spam messages in YouTube Live chat. Set rate limits, keyword filters, and block repeat offenders. GitHub - decisionnode/DecisionNode: CLI + Local MCP - A shared structured memory store across Claude Code, Cursor, Windsurf, Antigravity, and every MCP client. Semantically queryable. GitHub - AvaCodeSolutions/django-email-learning: An open source Django app for creating email-based learning platforms with IMAP integration and React frontend components. The $100K Gap in Kubernetes Security Tooling Function Calling Harness: From 6.75% to 100%
GitHub - molang163/GobanFTP: A Go game can live in an FTP listing.
molang163 · 2026-05-19 · via Hacker News: Show HN

English | 简体中文 | 日本語

A Go game reconstructed from enumerable names.

Perl 5.34+ Version 1.000 License Apache-2.0 Showcase test

GobanFTP stores a Go game as a directory-shaped protocol object. The game descriptor directory names the game, rules, and players. Moves and acknowledgements are event filenames under events/.

Replay reads those basenames. It ignores file bytes, file size, mtime, listing order, server order, sidecars, projections, and tmp entries.

Current line: v1.0/package 1.000 release source.

Three-minute check · Terminal play · Static specimen · The contract

Quick local check:

perl Makefile.PL
make test
prove -lr t/showcase-demo.t

First Look

These screenshots show the same object from four angles. The replay input is still the game descriptor basename plus direct event basenames.

Protocol Object

GobanFTP protocol object: game descriptor directory, event basenames, sidecar, projections, and tmp residue.

The game is visible as a tree. events/ contains the accepted names. sidecar/, projections/, and tmp/ may help a reader or a publisher, but they do not decide replay.

Race Becomes Fork

GobanFTP race fixture replay output showing a visible fork diagnostic.

If two moves extend the same parent, listing order does not choose one. Default replay reports the fork and stops unless explicit ack-assisted recovery is requested.

Terminal Play

GobanFTP terminal play surface with keyboard and optional SGR mouse two-step confirmation.

play --tui is local input and display over the same replay and publish callbacks. Keyboard and SGR mouse, where available, select a candidate first. A second Enter or click confirms it. Input is locked while publishing.

Static Witness Specimen

GobanFTP static witness specimen showing a visual 9x9 board and witness fields.

The specimen is a direct-open HTML file. It has no script, no server, and no hosted Web UI behavior. It displays witness fields and projection text that were supplied to it.

The Contract

GOFTP/1 has two authoritative inputs:

game descriptor directory basename
direct child basenames under events/

Core replay ignores:

entry type
file bytes
file size
listing order
server order
FTP mtime
WebDAV ETag
WebDAV Last-Modified
WebDAV locks
sidecar/**
projections/**
tmp/**

RETR, SIZE, MDTM, HTTP resource bodies, cache validators, and server metadata are not replay inputs. The game can be replayed after deleting every projection.

An event id is derived from canonical filename context, not from file contents. The hash input binds the game descriptor basename and the event basename without its final .h-<event_id> field. The visible event id is the first 16 characters of lowercase base32hex SHA-256.

A line of play is a hash chain. All known play is a DAG. A network race becomes a visible fork; it is not hidden by FTP or WebDAV ordering. Conservative replay stops at the fork unless an explicit ack-assisted path is requested.

Protocol names use a small public alphabet:

[a-z0-9._-]

Do not put secrets in filenames.

Three-Minute Check

Run the local showcase test:

prove -lr t/showcase-demo.t

It checks the clean fixture, the race fixture, source-art smoke, the unsigned local-goftp1 v1 witness, and static inspection views. Those views are read-only inspection output: static HTML is not hosted Web UI, and --surface terminal is not the local play --tui input surface.

Local terminal play is available through gobanftp play --tui; it stays an input/display layer over replay and publish callbacks. Keyboard and SGR mouse input select a candidate first, require a second Enter or click to publish, and lock input once publishing starts.

Open the clean fixture:

examples/fixtures/ftp-shrine/

Then run:

GOBANFTP_ROOT=examples/fixtures/ftp-shrine \
perl -Ilib script/gobanftp play --once g1.id-ftp-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim

Selected output:

gobanftp.play=ok
events=7
canonical_moves=6
worldline.status=main
  a b c d e f g h i
9 . . . . . . . . .
8 . . . . . . . . .
7 . . . . . . . . .
6 . . . B . . . . .
5 . . . B . W . . .
4 . . . B W W . . .
3 . . . . . . . . .
2 . . . . . . . . .
1 . . . . . . . . .

Open the race fixture:

examples/fixtures/ftp-race-shrine/

Run:

GOBANFTP_ROOT=examples/fixtures/ftp-race-shrine \
perl -Ilib script/gobanftp replay g1.id-ftp-race-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim

Exit code 3 is expected for this fixture. Selected output:

diagnostic ... code=fork parent_id=hihat4p8r6gaeuts
gobanftp.replay=fork
events=4
event_set_count=4
canonical_moves=1
legal_moves=3
canonical_ids=hihat4p8r6gaeuts

The fixture leaves the race visible. Listing order does not select a winner.

Terminal Play

gobanftp play --tui is local play over the same replay and publish callbacks. It does not own rules, roots, diagnostics, or event acceptance.

select -> confirm -> publishing_locked -> published

Keyboard input is the fallback path. SGR mouse input is used where the terminal supports it. One successful publish ends the session.

Static Witness Specimen

examples/static/witness-specimen.html is a direct-open specimen. It has no script, no network fetch, no server process, and no hosted UI behavior.

The visual board is a projection view beside raw projection text. It can display fields that were already generated; it cannot make an event valid.

Fixture Layout

The browsable fixture is a protocol object, not a screenshot:

g1.id-ftp-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim/
  events/
    m1.p000001.b.play-dd.pa-genesis.by-daemon.n-altar1.h-0agr68rv1sp5qi21
    ...
  sidecar/
  projections/
    board/current.txt
    oracle/listing.txt
    sgf/main.sgf
  tmp/

Read the tree like this:

g1.../         names the game
events/       names the moves and acknowledgements
sidecar/      may explain, but cannot decide
projections/  may display, but cannot decide
tmp/          is publishing residue

Useful first files:

examples/fixtures/ftp-shrine/README.md
examples/fixtures/ftp-shrine/g1.id-ftp-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim/events/
examples/fixtures/ftp-shrine/g1.id-ftp-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim/projections/oracle/listing.txt
examples/fixtures/ftp-shrine/g1.id-ftp-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim/projections/board/current.txt
examples/fixtures/ftp-shrine/g1.id-ftp-shrine.s9.r-chinese-area-v1.k7500.pb-daemon.pw-pilgrim/projections/sgf/main.sgf
oracle/goban.pl

projections/oracle/listing.txt is a reader-facing transcript. It demonstrates that NLST events/ exposes event basenames while RETR, SIZE, and MDTM remain outside GOFTP/1 replay.

SGF is generated from replay. It is not read back as the source game.

What Runs Now

Implemented in v1.0/package 1.000:

  • Consensus core: filename grammar, event ids, event_set_root, DAG replay, chinese-area-v1 rules, SGF, and ack-assisted fork recovery.
  • Stores: local, FTP, WebDAV, read-only Git tree, and read-only DNS record-file admission.
  • Interfaces: play --tui, witness text/html/terminal output, projections, direct-open static specimen, and executable source-art smoke.
  • Profiles: unsigned GOFTP/1, declared substrate profiles, and explicit signed-HMAC witness/preflight checks.
  • Checks and fixtures: showcase test, attack fixtures, cross-substrate golden vectors, and profile publish fixtures.

Deliberately out of scope in v1.0/package 1.000:

  • git-tree-goftp1 is read-only at runtime; publish commands fail at the storage boundary.
  • dns-record-goftp1 is read-only normalization of a local or otherwise declared record file. DNS admission does not query live DNS, run AXFR, trust DNSSEC, call provider APIs, or publish records.
  • TTL, answer order, cache age, DNSSEC status, authoritative server identity, and provider metadata stay outside consensus.
  • Live DNS is not implemented by the DNS record-file profile.
  • Static HTML witness output is not hosted Web UI, and --surface terminal is not the local play --tui input surface.
  • Verifier-local HMAC key files, explicit verifier-supplied lifecycle status, and fixture publish-token/preflight semantics are not production key lifecycle, production auth, or real writer authorization.
  • Production auth and production key lifecycle are not implemented in this release.
  • Final scoring/result events remain outside GOFTP/1.

FTP listing-shadow public poison-vector coverage is fixture/listing evidence only. It does not claim RETR, SIZE, MDTM, live FTP auth, live FTP integrity, or production FTP deployment safety. The ftp-goftp1 tmp+rename publish path is declared separately and covered by mock FTP tests plus optional script/live-ftp-smoke.

Signed/auth material in this release is verifier-local fixture/preflight coverage. It is not production writer authorization or production key lifecycle.

Unsigned GOFTP/1 remains valid and unchanged. A signed/auth profile can reject events only when that explicit profile is selected; sidecar signatures do not alter unsigned replay.

Source Art Boundary

oracle/goban.pl may look like a Go board. It still has to run:

perl -c oracle/goban.pl
perl oracle/goban.pl --smoke

Expected output includes:

oracle/goban.pl syntax OK
gobanftp.oracle=ok
rules.move=ok

The source art can dispatch to tested modules. It does not define filename grammar, event ids, DAG replay, rule legality, storage behavior, SGF, or diagnostics. Whitespace, comments, POD, C hooks, and asm-like text are presentation, not replay input.

Run It

Runtime requirements:

Perl 5.34+
Digest::SHA
HTTP::Tiny
MIME::Base64
Net::FTP

Build and test requirements:

make

Optional:

Inline
Inline::C

Normal test run:

perl Makefile.PL
make
make test

Full local prove run:

prove -lr t

Create a disposable game:

tmp="$(mktemp -d)"
export GOBANFTP_ROOT="$tmp"

perl -Ilib script/gobanftp create-game --id demo --size 9 --black alice --white bob
perl -Ilib script/gobanftp publish-move g1.id-demo.s9.r-chinese-area-v1.k7500.pb-alice.pw-bob aa
perl -Ilib script/gobanftp publish-move g1.id-demo.s9.r-chinese-area-v1.k7500.pb-alice.pw-bob play-bb
perl -Ilib script/gobanftp play --once g1.id-demo.s9.r-chinese-area-v1.k7500.pb-alice.pw-bob

Inspect the accepted packets:

find "$GOBANFTP_ROOT" -path '*/events/*' -exec basename {} \; | sort

Those names are the game input. File contents are not.

Stores

Local is the default store. FTP, read-only Git tree, read-only DNS record-file admission, and WebDAV use the same listing-first boundary without reading event file contents, blob bytes, resource bodies, or DNS transport metadata.

FTP mode:

GOBANFTP_STORE=ftp
GOBANFTP_FTP_HOST
GOBANFTP_FTP_USER
GOBANFTP_FTP_PASSWORD
GOBANFTP_FTP_ROOT
GOBANFTP_FTP_PORT
GOBANFTP_FTP_PASSIVE
GOBANFTP_FTP_TIMEOUT
GOBANFTP_FTP_PUBLISH_MODE

WebDAV mode:

GOBANFTP_STORE=webdav
GOBANFTP_WEBDAV_URL
GOBANFTP_WEBDAV_USER
GOBANFTP_WEBDAV_PASSWORD
GOBANFTP_WEBDAV_TOKEN
GOBANFTP_WEBDAV_TIMEOUT
GOBANFTP_WEBDAV_CLASS
GOBANFTP_WEBDAV_PUBLISH_MODE

Git tree mode:

GOBANFTP_STORE=git-tree
GOBANFTP_GIT_REPO
GOBANFTP_GIT_TREEISH
GOBANFTP_GIT_BINARY

DNS record mode:

GOBANFTP_STORE=dns-record
GOBANFTP_DNS_RECORD_FILE
GOBANFTP_DNS_OWNER_SUFFIX

Git tree replay reads direct child names from <treeish>:<game>/events and ignores blob bytes, commit metadata, refs, branches, tags, sidecars, projections, and tmp entries. Git tree mode is read-only for now; publish commands fail at the storage boundary.

DNS record admission reads only a local or otherwise declared record-file presentation for dns-record-goftp1, supplied at runtime by GOBANFTP_DNS_RECORD_FILE. It is not a live DNS resolver, AXFR client, DNSSEC validator, provider API client, dynamic update client, or publishing backend. TTLs, record order, answer order, cache age, DNSSEC status, authoritative server identity, and provider metadata are ignored before event_set_root.

WebDAV replay reads events/ with PROPFIND Depth: 1 and uses only direct href basenames. Publishing writes a zero-byte temporary resource under tmp/, moves it to events/<event-name>, then confirms visibility with a fresh PROPFIND.

For ftp-goftp1, default publishing uploads a zero-byte temporary entry under tmp/, renames it to events/<event-name> with RNTO, and confirms visibility by listing. GOBANFTP_FTP_PUBLISH_MODE=mkdir remains the directory-shaped alternative. This path does not claim live FTP auth, live FTP integrity, or production FTP deployment safety.

Projection writes are local-only for now. Nonlocal project and sgf --write are rejected; plain sgf, verify, replay, play, and watch can read nonlocal listings.

Release Checks

Main commands:

prove -lr t/showcase-demo.t
prove -lr t

The current P14 release record is in docs/P14_RELEASE_GATE.md. It records the final release-source checks and points to the external artifact/tag record plan; the final tarball hash belongs outside the source tree.

The final artifact identity, version decision, and tag preconditions are tracked in docs/P14_RELEASE_MANIFEST_AND_TAG_PLAN.md.

Optional disposable live FTP smoke:

script/live-ftp-smoke

License

Unless otherwise noted, the code, protocol documentation, examples, fixtures, test vectors, projections, and static specimens in this repository are licensed under the Apache License, Version 2.0.

Copyright 2026 GobanFTP contributors.

This license covers the repository contents. It does not grant permission to access, test, or publish to third-party FTP, WebDAV, DNS, Git, or other systems without authorization, and it is not a production security certification.

v1.0/P14 Scope

GobanFTP v1.0 is not a game server. It is a Perl implementation of a small filename protocol for replaying Go from accepted event basenames across several enumerable stores.

The release checks compare event names, event_set_root, DAG replay, canonical prefix, board projection, SGF, and the diagnostic class for the same observable logical failure. The expected behavior is:

modify mtime       -> unchanged
modify file bytes  -> unchanged
modify LIST order  -> unchanged
add sidecar        -> unchanged
change basename    -> changed
bad signed profile -> rejected by that signed profile
source art / C / asm / Web UI / TUI -> cannot change truth

v0.1 froze the GOFTP/1 consensus boundary. v1.0/P14 applies that boundary to package 1.000 across local files, FTP, WebDAV, read-only Git tree replay, read-only DNS record-file admission, terminal play, static witness output, and source art smoke.

Documentation

Fast paths:

Showcase:     docs/SHOWCASE.md
Protocol:     docs/PROTOCOL.md
Profiles:     docs/PROFILES.md
Grammar:      docs/GRAMMAR.md
Attacks:      docs/ATTACKS.md
v1.0 DoD:     docs/V1_DOD.md
P14 checks:   docs/P14_RELEASE_GATE.md
P14 tag plan: docs/P14_RELEASE_MANIFEST_AND_TAG_PLAN.md
Algorithms:   docs/ALGORITHMS.md
Rules:        docs/RULES.md
Diagnostics:  docs/DIAGNOSTICS.md
Source art:   docs/SOURCE_ART.md
Build:        docs/BUILD.md
CLI:          docs/CLI.md
Roadmap:      docs/ROADMAP.md
Decisions:    docs/DECISIONS.md

Repository map:

.
|-- README.md              this text
|-- README.zh-CN.md        Simplified Chinese README
|-- README.ja.md           Japanese README
|-- docs/                  protocol, roadmap, decisions, release records
|-- oracle/goban.pl        executable source-art smoke wrapper
|-- lib/GobanFTP/          Perl implementation modules
|-- script/gobanftp        CLI entry point
|-- examples/fixtures/     browsable mirrored games
`-- t/                     tests and attack fixtures

Before changing protocol behavior, read:

  1. docs/PROTOCOL.md
  2. docs/ARCHITECTURE.md
  3. docs/ALGORITHMS.md
  4. docs/RULES.md
  5. docs/ROADMAP.md
  6. docs/DECISIONS.md

Start with the existing protocol docs before adding a new profile or rule.