From 0a97d8639f64e14aea4710d1d1ab8c73b389f7b5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 22 Sep 2026 20:53:40 +0000 Subject: [PATCH 1/2] Adopt the aos workflow and state the repository rules for agents Future tool work on earnedshape runs through aos, the author's own backlog and commit/PR workflow layer. Its machinery and instance state live under .aos/, which is ignored here: the instance keeps its own history in a separate private state repository, so this commit carries only the host-side changes. The aos scaffold wrote the two managed regions: the task-workflow pointer at the top of CLAUDE.md and the .aos ignore line. It was run with this project's own commands: the boundary lint is the quality, test and lint gate, no formatter is declared, commit subjects stay plain prose to match the existing history, and test-first is off because there is no test suite. Two additions sit outside the managed regions: - A .claude ignore line. The .claude symlink points into the untracked machinery clone, so tracking it would leave a dangling link for anyone cloning this repository. - An "earnedshape" section in CLAUDE.md with the rules any agent working here must follow: the repository is public-facing; protocol/ stays vendor-free, enforced by tools/boundary_lint.py; nothing private, personal, employer- or client-related, and no discovery-run content; the author's own projects only with a one-line description; spike code stays in the private working repository; research claims cite research/REFERENCES.md. These rules live in the public repository rather than only in the private instance because every agent working here needs them and they contain nothing sensitive. Checked: python3 tools/boundary_lint.py . reports 2 findings, 0 new, so the published baseline is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Kkcu5mQ2JpAcSWUwskrSJw --- .gitignore | 10 ++++++++++ CLAUDE.md | 12 ++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 CLAUDE.md diff --git a/.gitignore b/.gitignore index b908d4c..073e8f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,13 @@ __pycache__/ *.pyc .DS_Store + +# Claude Code wiring: a local symlink into the aos machinery (.aos/sys/.claude), never tracked +.claude + +# aos:begin id=host-ignore rev=2 managed by aos touchpoint writer - do not edit by hand +# The instance — its own nested state repo (D11), always host-ignored. Deliberately +# NO trailing slash: a trailing-slash pattern matches only real directories, never a +# symlink, and an ephemeral host may mount .aos as a symlink to a sibling clone. +.aos +# aos:end id=host-ignore diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..b6da98d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,12 @@ + +This project's backlog, session protocol, and workflow tooling are managed by **aos** (the meta-workflow layer mounted at `.aos/`). Machinery lives at `.aos/sys/`; the authoritative session protocol is `.aos/sys/core/CLAUDE.md`. Instance state (backlog, specs, work-log) lives in the nested state repo at `.aos/` (host-ignored, its own git history). Do not edit this managed region by hand. + + +# earnedshape + +This repository is public-facing. Everything committed here, including commit messages, is written for outside readers. + +- Keep `protocol/` vendor-free. `python3 tools/boundary_lint.py .` enforces the layer cut and is the CI gate; run it before every commit. +- Nothing private enters this repository: no personal or critical content, no employer or client names, no content from discovery runs. The author's own projects may be named with a one-line description (see `docs/provenance.md`). +- Spike code stays in the private working repository. This repository records spike questions, status and results (`docs/phase-1-feasibility.md`, `capabilities/CONFORMANCE.md`). +- Research claims cite an entry in `research/REFERENCES.md`. A field that could not be checked stays marked as unchecked. From 78578d53c8b5e633ac2a98d8def96a965d8e7580 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 22 Sep 2026 21:30:49 +0000 Subject: [PATCH 2/2] Align the unchecked-field rule with the REFERENCES.md marker The CLAUDE.md rule said a source field that could not be checked "stays marked as unchecked", while research/REFERENCES.md marks such fields "not confirmed" with a reason, and the publication PR's acceptance check searches for exactly that phrase. An agent following the rule literally would write a marker the check does not find (advisory finding, review round 2). The rule now says such a field stays marked "not confirmed", with the reason: the convention REFERENCES.md already uses. The edit is one line, outside the aos managed region. Tested: python3 tools/boundary_lint.py . reports 2 findings, 0 new. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Kkcu5mQ2JpAcSWUwskrSJw --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index b6da98d..23d0081 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,4 +9,4 @@ This repository is public-facing. Everything committed here, including commit me - Keep `protocol/` vendor-free. `python3 tools/boundary_lint.py .` enforces the layer cut and is the CI gate; run it before every commit. - Nothing private enters this repository: no personal or critical content, no employer or client names, no content from discovery runs. The author's own projects may be named with a one-line description (see `docs/provenance.md`). - Spike code stays in the private working repository. This repository records spike questions, status and results (`docs/phase-1-feasibility.md`, `capabilities/CONFORMANCE.md`). -- Research claims cite an entry in `research/REFERENCES.md`. A field that could not be checked stays marked as unchecked. +- Research claims cite an entry in `research/REFERENCES.md`. A field that could not be checked stays marked "not confirmed", with the reason.