Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions ADOPTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@ mechanical route below. In particular, make the self-contained adoption bundle
and these instructions local **before the wall is registered**. A correctly
locked session may deny the network request that would otherwise retrieve them.

For a first adoption, the default is the day-zero coordinator:

```text
# Windows
py -3 scripts/start_writwall.py --project-root C:\path\to\your-project

# macOS or Linux
python3 scripts/start_writwall.py --project-root /path/to/your-project
```

It classifies the target from repository bytes, copies the complete skill bundle
into a temporary `.writwall-bootstrap/` directory, and emits the exact next
prompt. It is create-only bootstrap tooling, not an authority or installer.
Contradictory active state stops before output. Full interface and external-
Operator packet behavior are documented in
[`docs/day-zero-coordinator.md`](docs/day-zero-coordinator.md).

| Route | Use when | Tooling | What it produces |
|---|---|---|---|
| A. Chat prompt | You want to think it through with a model before touching the repo, or your project has an existing document corpus that needs mapping | Any capable chat model | Draft DR-001, draft adoption mapping, draft charter kill list, a checklist of manual steps |
Expand All @@ -48,6 +65,9 @@ locked session may deny the network request that would otherwise retrieve them.

Routes combine. A common path for an existing project is A (mapping conversation) followed by B (mechanical bootstrap) followed by the Owner steps in section 5.

The coordinator selects among these routes; it does not replace them. Its
handoff is temporary and must be removed before the adoption commit.

---

## 2. Route A: the adoption prompt
Expand Down
2 changes: 1 addition & 1 deletion LICENSE-MAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ the root `LICENSE` for every path assigned differently below.

| Scope | License | SPDX identifier |
|---|---|---|
| `DOCTRINE.md`, `README.md`, `START-HERE.md`, `ADOPTING.md`, `SELF-HOSTING.md`, `CLAUDE.md`, `migration-guides/**`, `decisions/**`, `governance/**`, `archive/**`, `examples/**`, `identity/**`, `docs/assets/**`, `docs/agents/**`, `docs/name-clearance.md`, `docs/identity-migration.md`, `.github/ISSUE_TEMPLATE/**`, `.github/pull_request_template.md`, and other prose or public visual assets | Creative Commons Attribution 4.0 International | `CC-BY-4.0` |
| `DOCTRINE.md`, `README.md`, `START-HERE.md`, `ADOPTING.md`, `SELF-HOSTING.md`, `CLAUDE.md`, `migration-guides/**`, `decisions/**`, `governance/**`, `archive/**`, `examples/**`, `identity/**`, `docs/assets/**`, `docs/agents/**`, `docs/day-zero-coordinator.md`, `docs/name-clearance.md`, `docs/identity-migration.md`, `.github/ISSUE_TEMPLATE/**`, `.github/pull_request_template.md`, and other prose or public visual assets | Creative Commons Attribution 4.0 International | `CC-BY-4.0` |
| `templates/**` | Creative Commons CC0 1.0 Universal | `CC0-1.0` |
| `adapters/**`, `.claude/hooks/wo_capability_wall.py`, and `init.sh` | MIT No Attribution | `MIT-0` |
| `scripts/**`, `checks/**`, `tests/**`, and `.github/workflows/**` | Apache License 2.0 | `Apache-2.0` |
Expand Down
31 changes: 17 additions & 14 deletions PROJECTION-MANIFEST.sha256
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,28 @@ b2e36dfcfc6eb31570c9340640bcd73abc62f57c80b4794abf36e3d3e89ab34f .github/depend
9e90d43615b02a265b08692ef7a1c00a37477a5c6b1e8233a8fc7bedefaedea6 .github/pull_request_template.md
419af9d8c4b603dd0c48b9897894a836125f9de10290f8af026a3b4e5565987d .github/workflows/ci.yml
e544abe8ffd83c81c7b002cbd2e552f9d56f226ea20e1e0722c5d1bdec914fe0 .gitignore
fb3be6732ba55f0684205b70e04c1f2d7e27a49b503ed847e5fd7603300d5ac4 ADOPTING.md
8f238796fff926a4fffe33080b4ff6face299ae84d9e60da532d71257465f00b ADOPTING.md
1179c999034f4ec1c1d44c1946bd2955c4625905e80767abe760c8c3ab01c493 CLAUDE.md
e32e0cc74d7f5992c6ce87d68bd17fca5f158570a00fc05c695c3f2e508d37d8 CONTRIBUTING.md
664196054cd98585105be457afa09c788a482416ccb48a87bb269b2156e49ae6 DOCTRINE.md
9ba9550ad48438d0836ddab3da480b3b69ffa0aac7b7878b5a0039e7ab429411 LICENSE
d00edb1fc3074e38b37e25d137ca3b7591e3506621d16a42a16963d0bb531d13 LICENSE-MAP.md
65b5178d1d9cd38398141d6c3cce98afbef3bed01078649dfc2cc0e13442f83b LICENSE-MAP.md
c274f80372d90c012937370f0e1f15087d22e308ef98b27cea5dc0d2d088366c LICENSES/Apache-2.0.txt
9ba9550ad48438d0836ddab3da480b3b69ffa0aac7b7878b5a0039e7ab429411 LICENSES/CC-BY-4.0.txt
a2010f343487d3f7618affe54f789f5487602331c0a8d03f49e9a7c547cf0499 LICENSES/CC0-1.0.txt
59746d6285ffa44bfc7ecada352aa5d6a20dc8eab418a60ce091cc739012c135 LICENSES/MIT-0.txt
35e6d37b7c5fa0c1fc872315cbd362cd24bfa41e1b7dc3019fbcd31e99350f51 NAMING.md
bd4ecb88f14a7201ff0dec20a3233dde8aa78ab42ff680909bc93a9c8d3b336e PROJECTION-PROVENANCE.md
bd0dc7b20da29af00b98aa0180d6c0fecd43552180f2578e687c1816e53e14f9 PROJECTION-PROVENANCE.md
20dd826e70636087c9f7758402990d4b0f13a3b64cc685d8f783afa16e092caf PUBLICATION.md
4b01bc93641761adbaf3b28819abdd347f3a8ea7e557fa3fe61382027451e21c README.md
8692caf4284aa02b2fca277a9fa0285ffcb18023e59b89ce31761f5f1c2011e0 REUSE.toml
6bb209548bee395394c53b8a04cec1ed558730b1fb6af6c4f60334ab1e4a9a6d README.md
5c91b3001237004226fcb3869cf9569f6d4987bb9f7f2c5704c9909a9c627e59 REUSE.toml
ab75b39490b4db4e203f5b23b480a1c998d87cf07d760cb787cb260778b21d0a SECURITY.md
6a51c1211cc675599634d144ca24a705ec1696f84640a6464b14efb1d6c3a629 SELF-HOSTING.md
7969a1e8b889dcde7789a079aee017a8312dcaa656f3539d6a57717a2402e5b5 START-HERE.md
7f916275e4876652ecbc181faf3394eceb182634842365dbff91edfa6751dc96 START-HERE.md
a4723267565778de85ae6f00f99bb903eab625e98917389fe1821a463d3d867d adapters/claude-code/README.md
aeb7f81d139e7ffa6de9a1782444b99eb6d549ac1c3a8b9c0f8bcb9c6addfa6d adapters/claude-code/SECURITY.md
dd29af2a39d25e0270ad9acc23ee912f81e39c674e1179759f4a3010c6a0c1a0 adapters/claude-code/wo_capability_wall.py
1e988ba28767063ff0d93969730321b4d7942f992edb3bbc177fbd2124c29f1b checks/check_distribution.py
da0b19de32aa43c9b97b05d74681a306d1b3e41c0e3f4de08aa2be85c4827241 checks/check_distribution.py
60fe377dac32b8d1697f859371ef40d26ed4e695fdceeda6d29ec0318d539504 checks/check_identity.py
30986c40ff7c9b29e2fba39ec04c18af3c1c351490410bd532a8391bcb92ed11 checks/check_licenses.py
e843892f24360174620fa02f3adf142a5eb5e2aac4bbfea786648f8b49375192 checks/check_name_clearance.py
Expand All @@ -45,6 +45,7 @@ fa88788242d920999b6e6737ea60b03dfe3f9ba2e0d90386b6bbcfeb6acd0509 docs/agents/do
55816569390363947ecc7735d7de13a3f59b8dae51f92383967e130b3a56d2a6 docs/assets/writwall-og.svg
0a5259d80265765aee16a421546e44458a1aabeecfa8c7f7dea8aead6a79655b docs/assets/writwall-readme-banner-0a5259d8.png
ad0fb4f671b8da9e3ab9720af7b39ac9c93201e6131c1df996e090a2bb2acc8a docs/assets/writwall-readme-banner.svg
78f1d4bb82cea5a048ddf867f54e67eb64bc71e2e3c222818a685074f75f4b57 docs/day-zero-coordinator.md
e1214e3e6018642809339249bb091a6fd754847b4f77c4bc7a39c5c87e6769cc docs/identity-migration.md
4d54cd53db8c165b40af7eb11b97a7f4faf5f23479c0efc8238e5d463b159008 docs/name-clearance.md
55716ad256ad76dd355d10ab872ffcd29b03fbf9651763b21351e813ef89d0c5 examples/README.md
Expand All @@ -57,10 +58,10 @@ d2c5a8ca21edf842dfd17a83862024afa0a92349abf693a60e55ce454c8d78fa examples/name-
30cdb11fbeb2fd9bbf4048255331ccbbdd6e516fae5adfa5317af00ce53607c9 governance/ADOPTION-MAPPING.md
08b235351ab7799715b1e2df4fa3dd9fa88bb85084c8aade4d01039bf255b489 governance/LOG-denials-probes.md
50784b173c90c4fd22572306429187c8a7e22614f4b9ad649a3005647467c7fa governance/LOG-denials.jsonl
37f2db9b6959ca756c57b2f6e66fc7accb33c0323fa2d4be5d5cd94de3f0f80f governance/LOG.md
d1553b059c3b35b5c540f90ee1aecbcb6cff635926a5d90bcbbfb75866dd9b6c governance/LOG.md
4421b3b6d1ddbfaf028ad8df19b8b27424db51d36278f249975bc76ab849673e governance/PLAN.md
2f534d0b74d644686344128e7cc6627ee965e6956d8d1e0b150ee4ca58f56879 governance/ROUTING.md
8f07eebcfd887ff6ad0900a7111e719ec51ac972565cc88f1bf6f9c1c6c73a30 governance/STATE.md
0d878b1813dcb3e7588193b0f2d9e4fafa645db4b726261b5796f8caf74db609 governance/STATE.md
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 governance/archive/.gitkeep
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 governance/briefs/.gitkeep
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 governance/decisions/.gitkeep
Expand All @@ -77,17 +78,18 @@ b567ce0c0867464328e81774d888f6491fa66b68ac73be01f993e5c4c66d3ed8 governance/tem
d355e46f978f17de8824af805e05124e0f20b1c072523b518422044f88c6f079 governance/templates/D-adoption-record.md
2b586efadab716a59fcafb74312a45a05401a4787fee6ae18cb5c9dd14ef3a09 governance/templates/E-adoption-mapping.md
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 governance/work-orders/.gitkeep
d78aa2546ec994415ce40602fd889f89b3c6d84696a3e747989fc5b0271444bb identity/legacy-references.json
547b1cce3b6e12cfd8a7bf3b9bce56f41d47193f1662a91531b0f3c19c5c5432 identity/legacy-references.json
345b7e962731c085a95aea66a344eae000b27c9bde13b0d790c76b73273dbe7a init.sh
5c90584642f405534b2071f27396ff293ab01632e4dbb8ccb6b8ec043dca4cc9 migration-guides/0.1-to-0.6.md
ba4eff258ca5b9a45f3f9f1cbf646ba5bc5521fae812adacac65cd2e78698c9d migration-guides/0.6-to-0.7.md
7be9ff49c33830f929584e9e6756f06be8634b1c79ff7210bf5184b51bfc0769 migration-guides/0.7-to-0.8.md
0b20940fecd22683586c5947b129e0203ed1534692993e40068f6305bfef8106 projection/public-files.txt
bd649302c60a6fb8d255c8b0d157cc1fbc6e95b6f626656d77d5df9abf71ea3f projection/public-files.txt
455ca1ab3c9e7e78afbb9946e13b94497ba24003ab6f411ea96cce26d4ecc39e scripts/build_distribution.py
762973ced40b5746a017eac52e4ce58180419f20c95bd861829cb7332f76fcd2 scripts/build_public_projection.py
3cf88f936599e0e84bc2368bc0503a39b9f96e47b473e09b26569e5c3c9edbd9 scripts/collect_name_clearance.py
1f06adfbd54410d13b518019db825c042017bca8e3df93b87130152f166e3f10 scripts/start_writwall.py
136fbbf25121905bd39828f7f0fe01c688908553f523e295f04f514552ab78aa skills/writwall-adopt/LICENSE-MAP.md
00731110a4f72a47caf6d680f1c8ccbcc232e8b5cf5384af6a2f837a4120a5df skills/writwall-adopt/SKILL.md
df64fb9788240618693f7e32aad3a73b6d724849a1d889569a961c66287604a4 skills/writwall-adopt/SKILL.md
a4723267565778de85ae6f00f99bb903eab625e98917389fe1821a463d3d867d skills/writwall-adopt/assets/adapters/claude-code/README.md
dd29af2a39d25e0270ad9acc23ee912f81e39c674e1179759f4a3010c6a0c1a0 skills/writwall-adopt/assets/adapters/claude-code/wo_capability_wall.py
bb54d108d1dff56291169624d26eac4f44db00ebf98e38bf7e6d56cd9b8d9647 skills/writwall-adopt/assets/checks/check_work_order_dispatch.py
Expand All @@ -105,12 +107,13 @@ b567ce0c0867464328e81774d888f6491fa66b68ac73be01f993e5c4c66d3ed8 templates/A-ch
5bfaa890ffddd423644428606753bc2e6562e3e5d67c1dc522172710708a4bf0 templates/C-owner-brief.md
d355e46f978f17de8824af805e05124e0f20b1c072523b518422044f88c6f079 templates/D-adoption-record.md
2b586efadab716a59fcafb74312a45a05401a4787fee6ae18cb5c9dd14ef3a09 templates/E-adoption-mapping.md
5dca1b9e7e1059a631cdd9b5da02d6cdc5b2a6ed9cbff48faff37c1d81adec49 tests/test_check_distribution.py
f555e5f2593043b4b897b1dcaa038dbce7b09890a37000e046e2f2a66f3708c9 tests/test_check_distribution.py
b046f2eea794070194294a33f2914e627eed384e63fccffc2ac46693db2a968c tests/test_check_licenses.py
9a106ff5182b4a15713575de42e90b0dc5cdeebcb17ba08d97522a4c9aa6b2fa tests/test_check_work_order_dispatch.py
05698dd8ad9b22d5b40f8ab3bd733afcfc0302ea31a8769eafc80305c321b1b5 tests/test_distribution.py
9e09d9c35634505bd8ad9291812cce2aaa93a1948f8ff52e9073dc6c38462318 tests/test_distribution.py
e150a2f988a4b0beac5f70644f55f5e185a8aa575e988a19642bafabc0f07775 tests/test_identity_migration.py
011d79618848880de8600b11bcedbdd6ba8b68124ddc3ae3e522288639c2498c tests/test_init_sh.py
96c255d84e37b8884cde769897e763776b81027080c2308c33dc5e4b8df4a4bf tests/test_name_clearance.py
2636e1f2c1f23c4d234b7b8c8886c3922cd94005bd20aed05c3846cd0aabe891 tests/test_public_projection.py
72d30a1c670af5019ef657af4dc6fc7a347fa15997abc576e89bb50540b5710c tests/test_start_writwall.py
0684c04067eb95eadc9f72ab126d8662b4a5e2005c80b2dea174075a6140eebc tests/test_wo_capability_wall.py
6 changes: 3 additions & 3 deletions PROJECTION-PROVENANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ Legacy commit identifiers in projected records refer to that private
source and are intentionally not resolvable from fresh public history.
No private remote URL is recorded here.

- Source commit: `3d5dc47f5c0c046a384dedc17fdc1a673fcd05d1`
- Source commit time: `2026-08-29T18:03:18-05:00`
- Projection allowlist SHA-256: `0b20940fecd22683586c5947b129e0203ed1534692993e40068f6305bfef8106`
- Source commit: `10fbff507409e1b549db69ecb462b7cdeb4e66b4`
- Source commit time: `2026-08-29T21:39:04-05:00`
- Projection allowlist SHA-256: `bd649302c60a6fb8d255c8b0d157cc1fbc6e95b6f626656d77d5df9abf71ea3f`

## Legacy identifier inventory

Expand Down
34 changes: 21 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,23 +93,31 @@ actually blocks the current session before real work begins.

## Try it in five minutes

If you are new to Writwall, begin with [START-HERE.md](START-HERE.md). It tells
you which role to engage, whether that agent belongs inside or outside the IDE,
and gives you the exact first prompt. The create-only scaffolder is useful only
after you understand that it does not complete adoption:
If you are new to Writwall, run the day-zero coordinator from this clean source
distribution. It inspects the target before assigning a role, makes the complete
adoption bundle local, and writes the exact next prompt without installing the
wall or claiming adoption:

```text
./init.sh /absolute/path/to/your-project
python3 /absolute/path/to/your-project/checks/check_work_order_dispatch.py --lockout
# Windows
py -3 scripts/start_writwall.py --project-root C:\path\to\your-project

# macOS or Linux
python3 scripts/start_writwall.py --project-root /path/to/your-project
```

This creates the governance directories, copies the templates, and installs
the pre-dispatch validator. If the target already has a `.claude/` directory,
it also copies the adapter file; it **does not register, activate, or birth-test**
that hook, inventory existing project authority, ratify adoption, or make a commit.
Read [ADOPTING.md](ADOPTING.md) next for the complete adoption sequence. Make
the bundled adoption skill local before registering a wall that may deny the
agent's network access.
The command asks one question at a time and creates only
`.writwall-bootstrap/` in the target. Read its `HANDOFF.md`, open the named
agent in the named location, and paste the supplied prompt. Do not enter
passwords, API tokens, private keys, mailbox contents, DNS values, or other
secrets; intake is stored as local plain text. See the
[coordinator reference](docs/day-zero-coordinator.md), or use
[START-HERE.md](START-HERE.md) for the manual and recovery routes.
The coordinator does not register, activate, or birth-test the wall.

The lower-level `init.sh` scaffolder remains available after you understand
the adoption sequence. It creates directories and template copies but does not
inventory authority, register or birth-test a hook, ratify adoption, or commit.

If the project does not yet have a settled public identity, stop before naming
packages, repositories, domains, or launch assets. Run the evidence-producing
Expand Down
1 change: 1 addition & 0 deletions REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ path = [
"decisions/**",
"docs/assets/**",
"docs/agents/**",
"docs/day-zero-coordinator.md",
"docs/identity-migration.md",
"docs/name-clearance.md",
"examples/**",
Expand Down
48 changes: 38 additions & 10 deletions START-HERE.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,44 @@ names, repository slugs, domains, logos, or launch copy. The coordinator may
collect evidence, but the Owner chooses the identity; unavailable sources are
not clear results.

1. Obtain the Writwall source distribution. Do not unpack it over your project.
2. Copy the complete `skills/writwall-adopt/` directory into the target
provider's temporary skill location. For Claude Code, use
`.claude/skills/writwall-adopt/`.
3. Confirm the bundle is locally readable. It contains the Doctrine, adapter,
checker, templates, and migration guides it needs.
4. Start the adoption coordinator. The bundle stays available until recorder
closeout no longer needs it and is removed before the adoption commit.
5. Register and birth-test the wall only through the exact lifecycle the
coordinator prepares and you ratify.
1. Obtain a clean Writwall source distribution. Do not unpack it over your
project.
2. From that distribution, run one command:

```text
# Windows
py -3 scripts/start_writwall.py --project-root C:\path\to\your-project

# macOS or Linux
python3 scripts/start_writwall.py --project-root /path/to/your-project
```

3. If you choose to track Owner active minutes, start the timer when the first
question tells you to; do not reconstruct time later. Answer one question at
a time without entering secrets. You may point it at an existing brief. The
command observes actual repository lifecycle state and creates only
`<project>/.writwall-bootstrap/`.
4. Open its `HANDOFF.md`. Start the agent and location it names and paste the
exact prompt. The complete local `writwall-adopt` bundle is already beside
the handoff.
5. Keep that temporary directory until recorder closeout no longer needs it;
remove it before the adoption commit. Register and birth-test the wall only
through the exact lifecycle the coordinator prepares and you ratify.

The command does not install Writwall, interpret intake as ratified intent,
create an activation pointer, contact an external system, or replace the
Owner-Agent. It stops on contradictory state instead of guessing from prior
chat. See [`docs/day-zero-coordinator.md`](docs/day-zero-coordinator.md) for
the complete contract.

### Manual fallback

If Python is unavailable, copy the complete `skills/writwall-adopt/` directory
into a temporary project-local location before registering any wall, confirm
it is readable, then use the prompt below. For Claude Code, a temporary
`.claude/skills/writwall-adopt/` location is supported. Keep the bundle until
the final authorized recorder action that needs it and remove it before the
adoption commit.

Paste this first:

Expand Down
Loading
Loading