Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Make the W3DS agent skill authoritative and eVault-first - #1125

Merged
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first
Aug 31, 2026
Merged

Make the W3DS agent skill authoritative and eVault-first#1125
coodos merged 4 commits into
mainfrom
docs/agent-skill-evault-first

Conversation

@coodos

@coodoscoodos commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Description of change

The W3DS agent skill (skills/w3ds/**) is what actually runs when someone builds a platform with Codex, Claude Code, Cursor or Copilot — so its blind spots become their architecture. It had three:

1. It cited an authority the reader does not have. Every reference was a repo-relative path (docs/docs/Post Platform Guide/mapping-rules.md) and the fallback instruction was grep -r docs/docs/. Neither exists for the target user: someone who ran npx skills add …@w3ds in their own project. When the skill was thin, the agent had nowhere to go, so it invented.

Every citation is now a live docs.w3ds.metastate.foundation URL, and SKILL.md opens with an Authority section: the docs site is authoritative, the skill is a condensed index of it, and where they disagree the docs win. A new Docusaurus plugin publishes /llms.txt, /llms-full.txt and the skill itself at /skill/**, so a fetch-capable agent can self-serve with nothing installed — and the manual Copilot / Windsurf / Codex installs become a single curl instead of hand-rolled concatenation.

2. It taught mechanics but never the philosophy. Mapping files, handleChange, webhook controllers — but nothing saying the eVault holds the truth and the platform DB is a projection. An agent following it faithfully builds a conventional app with sync bolted on: W3DS-flavoured, not W3DS-native.

New page Data Ownership Rules coins the rule and reconciles it with the existing canonical line that platforms are "caches and aggregators": that is permission to keep a fast copy of something authoritative elsewhere, never permission to own it. The decision procedure is the reconstructability test — if this database were dropped and rebuilt by replaying the relevant eVaults, what would be lost? A local DB is not a violation; a local DB that is the only home for some user data is. The page lists legitimate local-only state explicitly (sessions, queues, ID mappings, cached resolutions, derived indexes) so the rule stays applicable rather than absolutist, and does not start refusing the normal adapter work that pictique, blabsy and ecurrency already do.

3. It presented stale identifiers as canon.reference/registry.md said "Memorize this table" over 9 ontology UUIDs. services/ontology/schemas/ holds 37; production serves 32; GET /schemas is live. Real UUIDs also sat inside copy-pasteable mapping.json examples.

The table is gone. skills/ now contains zero ontology UUIDs — examples use "<the User schemaId, resolved from GET …/schemas>", which cannot be pasted as-is. In its place is a resolution procedure: /schemas/domains/:id/schemas/schemas/:id. w3ds-file-v1 stays verbatim and is labelled as what it is: a protocol string literal, not a registry lookup.

4. It never mentioned GitW3. The skill described eVaults, adapters and protocols, and said nothing about where the platform itself lives — so an agent would happily wire an application to any Git host and only discover the missing identity later, when retrofitting it is worst.

New reference/gitw3.md covers the forge as the second half of the same principle: the user's data belongs in their eVault, and the platform's identity belongs in its repository — .w3ds/platform.json beside the code, published from there. Ordinary Git hosting carries the code but not the platform eName, published profile, per-version identities, PPA certificates or deployment records. The skill now raises this early rather than after the fact, and knows the specifics that go wrong:

  • A plain repository import is not the guided port flow. If an existing platform identity must survive, the port stages the eName migration behind a wallet signature and leaves the old public listing in control until an administrator activates the cutover.
  • Managed manifest fields are off-limits.platformName, an assigned ename, the release-controlled version and any PPA proof field are written by GitW3. Never hand-edit, fabricate, or copy them between platforms.
  • PPA certifies one exact version. A certificate for 1.2.3 says nothing about 1.2.4, and only a published stable semantic release counts — not a draft, prerelease, or latest.
  • Deployment key handling.w3ds-deployment-key.json is downloaded once and unrecoverable; server-side only, from a secret manager or read-only mount, validated at startup, never committed, never shipped in a client bundle, never pasted into a prompt.
  • PP-Auth SDK integration is coming soon, so the skill leaves a narrow boundary instead of inventing a package name, endpoint or wire protocol to fill it.
  • Stop-and-ask conditions for repository work: auth failures, an unexpectedly non-empty destination, conflicting histories, an eName that would be replaced, an invalid manifest, a wallet that is not a profile author, or a push that would rewrite history. No force-push without the user's independent review.

What the skill now does differently

  • Pre-flight gate before writing any W3DS code: which ontology, whose eVault, truth or projection, what writes it to the eVault.
  • Two hard stops — stop and ask, rather than write code, when a design makes the local DB authoritative for user data, or when a persisted entity type has no ontology.
  • The second stop is a path, not a wall. Ontologies are ordinary JSON files anyone can PR, so the agent drafts the draft-07 schema and offers to open the PR instead of inventing a schemaId or giving up. Infrastructure/Ontology.md gains a Proposing a new ontology section documenting the real procedure, and the previously undocumented GET /domains and GET /domains/:id/schemas endpoints that make "does something already exist for this?" answerable.
  • No fetch capability is not a refusal. Offline or tool-less agents proceed, but must name every unverified identifier and mark it in code rather than substituting a plausible value — a wrong schemaId fails silently, which is worse than an obvious placeholder.
  • A definition of done: X-ENAME on every call, handleChange on every write path, idempotent webhook controller, no invented identifiers.

reference/w3ds-native.md (new) carries the reasoning behind those rules: the reconstructability test worked through real cases, and eight anti-patterns as wrong → right → why.

The install page was also orphaned — nothing in the docs, README.md or QUICKSTART.md linked to it. Now linked from Getting Started and the root README.

Issue Number

N/A

Type of change

  • Docs (changes to the documentation)
  • New (a change which implements a new feature) — the llms-txt Docusaurus plugin

How the change has been tested

  • pnpm --filter docs build succeeds. onBrokenLinks: 'throw' covers the sidebar_position renumber in W3DS Basics and every new cross-reference. (Pre-existing broken anchors in glossary.md / W3ID.md still warn; untouched, out of scope.)
  • Served the build and confirmed 200 on /llms.txt, /llms-full.txt, /skill/SKILL.md, /skill/reference/platform.md, /skill/reference/w3ds-native.md, /skill/reference/gitw3.md, /skill/w3ds-full.txt, plus the two new/edited doc pages.
  • llms.txt indexes 44 pages, matching find docs/docs -name '*.md' | wc -l.
  • No UUID matches anywhere under skills/. The only two remaining docs/docs mentions are deliberate prose.
  • Every intra-skill link and anchor resolves (script-checked) — this caught two stale anchors, one of them pre-existing.
  • All 42 distinct docs.w3ds.metastate.foundation URLs referenced from skills/ and docs/ resolve to a real page, anchors included.
  • Live endpoints confirm the documented shapes: GET /schemas carries domain, GET /domains returns {schemaId, domains}.

Not tested: the behavioural check (fresh agent, scratch project, three prompts — add an entity with no ontology, cache a display name, ask for the User ontology ID). Worth someone running before merge.

Noted for follow-up, not fixed here: production Ontology serves 32 schemas while the repo has 37, so the deployed service is behind. It is also the argument for resolving rather than recalling.

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c0be0f1c-43a8-4506-b296-096e443cc594


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coodos
coodos merged commit 7e56403 into mainAug 31, 2026
4 checks passed
@coodos
coodos deleted the docs/agent-skill-evault-first branch August 31, 2026 13:52
@coodos
coodos restored the docs/agent-skill-evault-first branch September 1, 2026 06:56
@coodos
coodos deleted the docs/agent-skill-evault-first branch September 1, 2026 06:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@coodos