wellactually

Writing principles

Publish and release

A principle changes the same way in the browser and through an agent, and you can switch between them at any point. Every change that passes is released as the next revision right away.

Revisions and drafts#

  • Saving in the editor and the agent's publish_draft release the principle's next revision. It then runs in your own agent, and in the agents of everyone who can see it and has you on their advisory board.
  • The registry builds the principle and runs its tests first, whichever way it came. An upload that fails is refused with the reasons, and nothing changes.
  • A released revision never changes. It keeps running exactly as it was built, also when the SDK moves on.
  • A revision stays a draft only when a package licence holds it back, or when a connected repository is set not to release on push. A draft runs for nobody. Release on the principle's page or the agent's release releases it.

In the browser#

Open the principle and choose Edit, next to its tabs or on a file in the Detector tab. Change the files, choose Run tests, and Save and release.

With an agent#

Ask your agent to change a principle, and it uses the MCP tools pull, run_tests and publish_draft. pull always brings your current draft, wherever it was written, and the newest release when there is none. It also gets an earlier revision back, such as passsy/use-clock@1. publish_draft needs you signed in once with the plugin's login skill. release releases a draft that is waiting. See Write with an agent.

The history#

The principle's page shows its history. Each revision shows its hash, its date and the files that changed. Your agent reads the same history with history.

Public or private#

A principle is private until you make it public. A private principle runs for you on every machine you sync. It also runs for members of a private collection you add it to, once they follow that collection.

Who can see it in the editor picks the visibility as you create or edit a principle. Make public in the Settings tab of the principle's page shows it in the Library and runs it for everyone who has you on their advisory board. Make private stops it for them at their next sync and takes it out of public collections.

An agent uses set_visibility, or publish_draft with visibility. A principle without a release becomes public with its first release. When its package.json sets visibility, that wins, and neither the website nor the agent can change it.

Retire a principle#

Retire a principle when its advice turned out wrong, or its detector cannot be made quiet. It then runs for nobody, you included, and takes no new revisions. Its page stays and shows your reason, and everyone who ran it is told.

Retiring cannot be undone, except for a principle synced from GitHub whose folder comes back. Anyone can still fork the last release to keep it running for themselves.

Which API version a release runs on#

A revision records the detector API version it was built against, shown on its page. The import path says which one: @wellactually/sdk/v4 in detector.ts and @wellactually/sdk/v4/test in the tests. Keep the path, and every upload stays on that version. Change it to move to a newer version, and let the compiler and your tests tell you what to adapt. Detector API versions says what each version changed.