Strip self-referential guarantee copy from the UI

The app editorialised about its own guarantees all over the place. Removed or
trimmed the clutter:
- chat composer footer 'Chat is the write-path. Destructive changes are proposed,
  never assumed.' (removed)
- Settings: dropped the 'no truth is lost' token note, the rebuildable-index /
  no-webhooks Sync essay (now one line about offline reads), the 'Reginald never
  does the arithmetic' model note, and the 'not configurable, that is the point'
  labels justification.
- Onboarding: cut 'I never attempt the arithmetic myself', 'nothing human is
  lost', the 'no bot comments / only footprint' bootstrap claim, 'everything
  reversible', and 'Nothing more' from the token hint.
- Directives: removed the 'entries are never edited, remembers everything
  politely' footer.
- Issue detail: removed the 'lives in pm-state, your repo never sees it' note.
- Calibration: cut 'never tracked'. Capture: cut 'no bot comments, your repo
  remains yours'. Connect: cut 'stored encrypted, never leaves it'.

Functional guidance and status copy kept. desktop tsc + build clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Croissant Le Doux
2026-07-10 17:18:05 -04:00
parent 8d750139a1
commit 2f4a0a114a
8 changed files with 11 additions and 33 deletions

View File

@@ -112,7 +112,7 @@ export function CalibrationScreen({ onBack, data }: { onBack: () => void; data?:
<circle key={i} cx={X(e) + ((i % 5) - 2) * 3} cy={Y(a)} r="3" fill="var(--accent)" opacity="0.55" />
))}
</svg>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: '8px 0 0' }}>estimated (x) vs actual days (y) · actuals inferred from git events, never tracked</p>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: '8px 0 0' }}>estimated (x) vs actual days (y)</p>
</Card>
<div style={{ display: 'flex', flexDirection: 'column', gap: 14 }}>

View File

@@ -289,7 +289,7 @@ export function CaptureScreen({ onDone }: { onDone: () => void }) {
{live ? filedCount : tickets.length} issues opened in gitea with <span style={{ font: 'var(--text-data)' }}>est/*</span> and <span style={{ font: 'var(--text-data)' }}>p/*</span> labels, nothing else touched.
</p>
<p style={{ font: 'var(--text-agent)', color: 'var(--ink-2)', margin: 0 }}>
Elapsed {clock}, under budget. No bot comments, no synthetic issues; your repo remains yours.
Elapsed {clock}.
</p>
<Button iconRight="arrow-right" onClick={onDone}>To morning service</Button>
</div>

View File

@@ -96,7 +96,7 @@ export function ConnectScreen({ onConnected, existing }: { onConnected: () => vo
</span>
</div>
<p style={{ font: 'var(--text-body)', color: 'var(--ink-2)', margin: '0 0 18px' }}>
Connect your Gitea. Your token is stored encrypted on this machine and never leaves it.
Connect your Gitea.
</p>
<div style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>

View File

@@ -115,10 +115,6 @@ export function DirectivesScreen() {
</div>
</Card>
)}
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: 0 }}>
Entries are never edited. Corrections are new entries; the ledger remembers everything, politely.
</p>
</div>
)
}

View File

@@ -335,12 +335,6 @@ export function IssueScreen({
</div>
)}
</div>
{/* provenance note */}
<div style={{ padding: '10px 20px 14px', borderTop: '1px solid var(--line-1)' }}>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: 0 }}>
Lives in pm-state. Your repo never sees any of it.
</p>
</div>
</div>
</Card>
</div>

View File

@@ -155,11 +155,11 @@ export function OnboardingScreen({ onConnected }: { onConnected: (dest: 'focus'
<Frame footer={<Button iconRight="arrow-right" onClick={() => setStep(1)}>Begin</Button>}>
<h1 style={{ font: 'var(--text-title)', color: 'var(--ink-1)', margin: 0 }}>Good morning.</h1>
<p style={{ font: 'var(--text-agent-lg)', color: 'var(--ink-2)', margin: 0 }}>
I am Reginald, your project manager. I interview you rather than trouble you with forms, I forecast in
honest ranges, and I never attempt the arithmetic myself; there is a scheduler for that.
I am Reginald, your project manager. I interview you rather than trouble you with forms, and I forecast
in honest ranges.
</p>
<p style={{ font: 'var(--text-body)', color: 'var(--ink-2)', margin: 0 }}>
Your plans reside in your own Gitea as ordinary issues and labels. Dismiss me, and nothing human is lost.
Your plans reside in your own Gitea as ordinary issues and labels.
</p>
</Frame>
) : null}
@@ -196,7 +196,7 @@ export function OnboardingScreen({ onConnected }: { onConnected: (dest: 'focus'
type="password"
value={token}
placeholder="gitea PAT"
hint="Scopes: repo, issue. Nothing more."
hint="Scopes: repo, issue."
onChange={(e) => {
setToken(e.target.value)
setDiscovery('idle')
@@ -352,14 +352,11 @@ export function OnboardingScreen({ onConnected }: { onConnected: (dest: 'focus'
))}
</div>
</div>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: 0 }}>
No bot comments, no body frontmatter, no synthetic issues, ever. Labels are the only footprint.
</p>
</Frame>
) : null}
</div>
<span style={{ font: '400 11px var(--font-mono)', color: 'var(--ink-3)' }}>first run · everything reversible</span>
<span style={{ font: '400 11px var(--font-mono)', color: 'var(--ink-3)' }}>first run</span>
</div>
)
}

View File

@@ -76,7 +76,6 @@ export function SettingsScreen({
<Icon name="layers" size={12} />
sidecar: {connection.pmStateRepo ?? `${connection.repo}-pm-state`}
</Row>
<Note>Your token is stored encrypted on this machine. Delete the sidecar and resync; no truth is lost.</Note>
<Row style={{ gap: 8, marginTop: 2 }}>
<Button variant="secondary" size="sm" icon="settings-2" onClick={onReconnect}>
Reconfigure
@@ -105,11 +104,7 @@ export function SettingsScreen({
Reconciles on launch and after every write
</span>
</Row>
<Note>
The board is a rebuildable index over gitea, the durable truth. When gitea is unreachable the last
snapshot is served from cache (the rail's dot turns red), and the next successful reconcile supersedes it.
No webhooks, no polling: reads are on demand.
</Note>
<Note>Offline, the board reads from the last cached snapshot.</Note>
</div>
</Card>
@@ -135,8 +130,7 @@ export function SettingsScreen({
</Row>
)}
<Note>
An OpenAI-compatible endpoint (set it in Reconfigure). Reginald names, negotiates and explains; it never
does the arithmetic; the scheduler and Monte Carlo do that.
An OpenAI-compatible endpoint (set it in Reconfigure).
</Note>
</div>
</Card>
@@ -154,7 +148,7 @@ export function SettingsScreen({
))}
<Tag label="deadline/hard" />
</Row>
<Note>Fixed sets, human-meaningful, visible in gitea. Not configurable: that is rather the point.</Note>
<Note>The fixed label vocabulary, visible in gitea.</Note>
</div>
</Card>

View File

@@ -198,9 +198,6 @@ export function ChatPanel({ onOpenDirectives, offline, onApplyChange }: ChatPane
<Icon name="send" size={14} />
</button>
</div>
<p style={{ font: 'var(--text-caption)', color: 'var(--ink-3)', margin: '8px 2px 0' }}>
Chat is the write-path. Destructive changes are proposed, never assumed.
</p>
</div>
</aside>
)