Repository navigation
Adopt the aos workflow and state the repository rules for agents - #2
Conversation
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) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kkcu5mQ2JpAcSWUwskrSJw
PR Review VerdictResult: BLOCK Deterministic: boundary-lint CI check run on the PR head: success (both the push and pull_request runs); locally Acceptance Criteria
Findings
Not Checked
Routed
Judgment Dimensions
Generated by Claude Code |
|
Review round 1, how each finding was handled:
Generated by Claude Code |
PR Review VerdictResult: PASS Deterministic: boundary-lint CI Acceptance Criteria
Findings
Not Checked
RoutedJudgment Dimensions
Generated by Claude Code |
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) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kkcu5mQ2JpAcSWUwskrSJw
|
Review round 2 (PASS): the one advisory is fixed in 78578d5. The CLAUDE.md rule now says an unchecked field stays marked "not confirmed", with the reason. That is the marker REFERENCES.md uses, and it is the phrase #1's acceptance check searches for. Generated by Claude Code |
PR Review VerdictResult: PASS Deterministic: boundary-lint CI Acceptance Criteria
FindingsNot Checked
RoutedJudgment Dimensions
Generated by Claude Code |
Before: work on earnedshape had no shared backlog, commit or PR workflow, and the repository held no written rules for agents working in it.
After: tool and backlog work runs through aos, the author's own backlog, commit, PR and review workflow, and every agent working here reads the repository rules from CLAUDE.md.
This PR adds only the host-side wiring: aos keeps its instance state in a separate private repository, so nothing private lands here when this repository goes public.
How: the aos scaffold was run with this project's own commands (the boundary lint as the quality, test and lint gate; no formatter; prose commit subjects; test-first off because there is no test suite). It wrote the two managed regions, the CLAUDE.md pointer and the
.aosignore line. Two hand additions sit outside them: a.claudeignore line, and a short "earnedshape" section in CLAUDE.md with the agent rules.Merge after #1 (see Risks).
Why
The owner wants all future tool and backlog work on earnedshape to go through aos, with the instance state kept outside this repository so it stays clean for publication. Backlog item AOS.
Approach
.aos/..claudeis ignored, not tracked. The local.claudesymlink points into the untracked aos machinery clone, so tracking it would leave a dangling link for anyone cloning this repository.protocol/, no private or employer-related content, own projects only with a one-line description, spike code stays private, research claims citeresearch/REFERENCES.md) could have lived only in the private instance. They sit here instead because every agent working on the repository needs them and they contain nothing sensitive.Acceptance List
Derived from the acceptance criteria of AOS.
freshness.py startreports green for the instance — proof: eval:freshness-start (python3 .aos/sys/core/scripts/freshness.py start) — Verify: runpython3 .aos/sys/core/scripts/freshness.py startin a checkout with the aos instance mounted; it exits 0. It only warns on a missing region, so also check thatCLAUDE.mdcarriesaos:begin id=task-workflowand.gitignorecarriesaos:begin id=host-ignoremaincontains only the aos managed regions, a.claudeignore line, and a short repository-rules section in CLAUDE.md for agents working on the public repository (public-facing, vendor-free protocol/, no private or employer-related content, own projects only with a description, spike code stays private, claims cite REFERENCES.md) — proof: eval:host-diff-managed-regions-only (git diff main --statand inspection of the hunks) — Verify: the diff touches only.gitignore(+10) andCLAUDE.md(new, 12 lines); read both hunks: oneaos:begin/aos:endregion per file, the.claudeline, and the# earnedshapesection with its four rulespython3 tools/boundary_lint.py .) — Verify: runpython3 tools/boundary_lint.py .; it reports 2 findings, 0 new, and exits 0.aos/or the.claudesymlink is tracked by this repository — Verify:git ls-files .aos .claudeprints nothing on this branchWhat Was Tested
python3 tools/boundary_lint.py .reports 2 findings, 0 new: the published baseline is unchanged.python3 .aos/sys/core/scripts/freshness.py startexits 0 against the mounted instance.git ls-files .aos .claudeis empty, so no instance state or machinery link is tracked.Risks
docs/provenance.md,docs/phase-1-feasibility.mdandresearch/REFERENCES.md, which Make the repository ready to publish: checked sources, review record, provenance #1 adds. The two PRs touch no common file, so there is no conflict either way, but merged first this PR would point agents at filesmaindoes not yet have..gitignoreand a newCLAUDE.md; no existing content or behavior is modified.🤖 Generated with Claude Code
https://claude.ai/code/session_01Kkcu5mQ2JpAcSWUwskrSJw