feat: add Truthmark health scorecard and bounded workflow contracts (#13)

* feat: add OpenSpec-driven workflow state

* docs: plan generated playbooks workflow contract

* feat: add truth health scorecard

Release Truthmark 2.1.0 with check JSON scorecard output.

Archive the completed OpenSpec pass 4 scorecard change and update generated truth surfaces.

* fix: unblock truthmark scorecard review

- restore and update coverage for scorecard/evidence/workflow behavior
- make truthmark-sync select a cheap local base when --base is omitted
- report malformed evidence YAML blocks as diagnostics instead of throwing

* fix: tighten workflow boundaries

* fix: fail closed when sync has no comparison base

* fix: tighten truth health review coverage

- only parse fenced YAML evidence blocks with top-level evidence markers
- convert coverage fixtures to valid v2 config and assert non-vacuous diagnostics
- update Truthmark truth docs for source traceability and workflow-state tests

* docs: clarify source traceability diagnostics

* docs: harden optional CLI workflow boundary

* docs: clarify product boundary is repo-local

* fix: bound truthmark workflow fallback behavior

- make live workflow preflight use the one-call instructions contract
- keep missing-CLI fallback bounded for Sync, Document, Structure, and Realize
- add routing and generated-surface coverage plus refreshed host surfaces

* test: cover no-cli workflow fallback bounds

- assert route-first fallback wording in generated workflow surfaces
- clarify progressive-disclosure support files are conditional
- align overview docs with bounded no-CLI behavior

* docs: route workflow eval coverage

* fix: remove workflow instructions preflight

* fix: remove stale workflow preflight wording

* fix: remove generic workflow validation blocks

* fix: avoid duplicated markdown context JSON

* fix: keep workflow status manifest-only

* docs: align truth docs with v2 hierarchy

---------

Co-authored-by: MerlinH <merlinh221@gmail.com>
This commit is contained in:
Merlin's Cat
2026-06-13 04:09:45 +10:00
committed by GitHub
co-authored by MerlinH
parent aa6442bba9
commit a083b703fa
335 changed files with 7232 additions and 3616 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ permission:
"grep *": allow
---
# Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
# Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Manual invocation: @truth-claim-verifier
+1 -1
View File
@@ -16,7 +16,7 @@ permission:
"grep *": allow
---
# Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
# Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Manual invocation: @truth-doc-reviewer
+4 -4
View File
@@ -8,9 +8,9 @@ permission:
glob: allow
edit:
"*": deny
"docs/truth/**": allow
"docs/truthmark/areas.md": allow
"docs/truthmark/areas/**/*.md": allow
"docs/truthmark/truth/**": allow
"docs/truthmark/routes/areas.md": allow
"docs/truthmark/routes/areas/**/*.md": allow
task: deny
webfetch: deny
websearch: deny
@@ -21,7 +21,7 @@ permission:
"git diff*": allow
---
# Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
# Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Manual invocation: @truth-doc-writer
+1 -1
View File
@@ -16,7 +16,7 @@ permission:
"grep *": allow
---
# Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
# Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Manual invocation: @truth-route-auditor
+6 -8
View File
@@ -3,26 +3,24 @@ name: truthmark-check
description: Use when the user asks to audit repository truth health, routing, ownership, or canonical docs. Not for normal lint/test/typecheck/code-review verification, finish-time Sync, or silently rewriting docs.
argument-hint: Optional area, doc path, or audit focus
user-invocable: true
truthmark-version: 1.6.1
truthmark-version: 2.1.0
---
# Truthmark Check
Use this skill to audit repository truth health.
Invocations: OpenCode /skill truthmark-check; Codex /truthmark-check or $truthmark-check; Claude Code /truthmark-check; GitHub Copilot /truthmark-check; Gemini CLI /truthmark:check.
Quick procedure:
- Follow repository instruction files that exist in this checkout; do not assume any optional policy path exists.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist; then inspect canonical docs and relevant implementation directly.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist; then inspect canonical docs and relevant implementation directly.
- Report issues and suggested fixes; do not silently rewrite unrelated files.
- Direct checkout inspection is valid even when local tooling is unavailable.
- Read support/procedure.md before auditing details.
- Read support/subagents-and-leases.md before dispatching verifier subagents.
- Read support/subagents-and-leases.md only when dispatching verifier subagents.
- Read support/report-template.md before the final report.
Progressive disclosure:
- support/procedure.md
- support/report-template.md
- support/subagents-and-leases.md
- support/procedure.md — read before edits or detailed auditing; contains core quality gates
- support/report-template.md — read before the final report
- support/subagents-and-leases.md — read only when using subagents, leases, or accepting worker output
@@ -1,6 +1,6 @@
# Truthmark Check Procedure
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
# Truthmark Check
@@ -13,7 +13,7 @@ Truth Check is agent-led:
- inspect .truthmark/config.yml and configured route files only when they exist; then inspect canonical docs and relevant implementation directly
- Repository instruction files and explicitly configured policy docs remain instruction authority when present; do not assume a repository uses any particular policy path.
Implementation code and canonical truth docs are inspected evidence for current behavior; they do not silently override workflow write boundaries.
- inspect the configured root route index at docs/truthmark/areas.md and relevant child route files under docs/truthmark/areas/ when they exist
- inspect the configured root route index at docs/truthmark/routes/areas.md and relevant child route files under docs/truthmark/routes/areas/ when they exist
- check that current docs describe current code rather than historical plans
- check that route files map code surfaces to canonical truth docs when route files exist
- check for broad, catch-all, index-like, or mixed-owner truth docs and report them as topology issues requiring Truth Structure
@@ -29,9 +29,9 @@ Evidence Gate:
Truthmark hierarchy hints:
- Config, when present: .truthmark/config.yml
- Root route index, when present: docs/truthmark/areas.md
- Area route files, when present: docs/truthmark/areas/**/*.md
- Truth docs, when present: docs/truth/**/*.md
- Root route index, when present: docs/truthmark/routes/areas.md
- Area route files, when present: docs/truthmark/routes/areas/**/*.md
- Truth docs, when present: docs/truthmark/truth/**/*.md
Decision truth lives in the canonical doc it governs; date active decisions inline when added or changed.
Do not create separate active-decision ADR/planning logs; replace the active decision and let Git history carry the audit trail.
Update Product Decisions and Rationale when a decision changes behavior.
@@ -1,6 +1,6 @@
# Truthmark Check Report Template
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Report completion in this shape:
@@ -8,7 +8,7 @@ Report completion in this shape:
Truth Check: completed
Files reviewed:
- docs/truthmark/areas.md
- docs/truthmark/routes/areas.md
Issues found:
- none
@@ -18,7 +18,7 @@ Fixes suggested:
Evidence checked:
- Finding: The root route index is present and maps repository truth owners.
Evidence: docs/truthmark/areas.md:1
Evidence: docs/truthmark/routes/areas.md:1
Suggested fix: none
Confidence: high
@@ -1,6 +1,6 @@
# Truthmark Check Subagents And Leases
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
OpenCode subagent mode:
- use automatically when this workflow runs in OpenCode and the parent agent chooses bounded subagent fan-out
+8 -9
View File
@@ -3,28 +3,27 @@ name: truthmark-document
description: Use when the user asks to document existing implemented behavior, or Sync, Check, or Structure finds implemented behavior missing canonical truth. Not for functional-code changes, doc-first implementation, or topology repair that needs Structure.
argument-hint: Optional implemented behavior, API endpoint, route, controller, package, or truth-doc area to document
user-invocable: true
truthmark-version: 1.6.1
truthmark-version: 2.1.0
---
# Truthmark Document
Use this skill to document existing implemented behavior when no functional-code changes are required for the task.
Invocations: OpenCode /skill truthmark-document; Codex /truthmark-document or $truthmark-document; Claude Code /truthmark-document; GitHub Copilot /truthmark-document; Gemini CLI /truthmark:document.
Quick procedure:
- Follow repository instruction files that exist in this checkout; do not assume any optional policy path exists.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist; then inspect existing canonical docs, implementation code, and tests directly.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist; then inspect existing canonical docs, implementation code, and tests directly.
- Document current implemented behavior; do not invent future behavior.
- May write canonical truth docs and truth routing files only; must not write functional code.
- Read support/procedure.md before editing truth docs.
- Read support/subagents-and-leases.md before dispatching or accepting worker output.
- Read support/subagents-and-leases.md only when dispatching or accepting worker output.
- Read support/report-template.md before the final report.
Progressive disclosure:
- support/procedure.md
- support/report-template.md
- support/subagents-and-leases.md
- helper-manifest.yml
- support/helper-policy.md
- support/procedure.md — read before edits or detailed auditing; contains core quality gates
- support/report-template.md — read before the final report
- support/subagents-and-leases.md — read only when using subagents, leases, or accepting worker output
- helper-manifest.yml — read only when invoking helper validators or validating helper registration
- support/helper-policy.md — read only when invoking helper validators or reporting helper status
@@ -1,8 +1,8 @@
# Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
# Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
helpers:
validate-document-report:
optional: true
runner: truthmark>=1.6.1
runner: truthmark>=2.1.0
command:
argv:
- truthmark
@@ -17,7 +17,7 @@ helpers:
fallback: manually validate support/report-template.md required sections and structured Evidence checked entries
validate-write-lease:
optional: true
runner: truthmark>=1.6.1
runner: truthmark>=2.1.0
command:
argv:
- truthmark
@@ -1,6 +1,6 @@
# Optional Helper CLI Policy
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Optional helper CLI commands may collect deterministic checkout facts or validate artifacts. If the Truthmark CLI is unavailable or too old for a declared helper, continue manually using this procedure and report which helper was skipped. Helper output is derived evidence; it does not override direct checkout inspection, workflow write boundaries, or parent acceptance.
@@ -11,8 +11,8 @@ Runner detection:
- Do not fail the workflow solely because a helper cannot run.
Available helpers:
- validate-document-report: optional truthmark>=1.6.1; manual fallback: manually validate support/report-template.md required sections and structured Evidence checked entries
- validate-write-lease: optional truthmark>=1.6.1; manual fallback: manually compare declared allowedWrites and forbiddenWrites with the actual changed files
- validate-document-report: optional truthmark>=2.1.0; manual fallback: manually validate support/report-template.md required sections and structured Evidence checked entries
- validate-write-lease: optional truthmark>=2.1.0; manual fallback: manually compare declared allowedWrites and forbiddenWrites with the actual changed files
Final reports should include helper status when helpers are declared for this workflow:
@@ -1,6 +1,6 @@
# Truthmark Document Procedure
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
# Truthmark Document
@@ -14,7 +14,7 @@ Truth Document is manual and implementation-first:
- Repository instruction files and explicitly configured policy docs remain instruction authority when present; do not assume a repository uses any particular policy path.
Implementation code and canonical truth docs are inspected evidence for current behavior; they do not silently override workflow write boundaries.
- document current implemented behavior; do not invent future behavior or planned endpoints
- may write canonical truth docs and docs/truthmark/areas.md or relevant child route files only
- may write canonical truth docs and docs/truthmark/routes/areas.md or relevant child route files only
- must not write functional code
- when routing is missing, stale, broad, overloaded, catch-all, or cannot map the behavior to a bounded truth owner, run Truth Structure first when routing repair is safe and in scope
- block and recommend Truth Structure when routing repair is unsafe, ambiguous, or outside the task boundary
@@ -44,12 +44,12 @@ Evidence Gate:
Repository intelligence artifacts are optional derived context: RepoIndex, RouteMap, ImpactSet, and ContextPack may guide routing, context selection, and verification planning when available.
They do not override checkout evidence, canonical truth docs, route files, or workflow write boundaries.
If unavailable, inspect any present Truthmark config, route files, source files, truth docs, and tests directly, then report that repository-intelligence artifacts were not generated.
When creating or updating a truth doc, inspect the routed truth kind and use the matching `docs/templates/<kind>-doc.md` template.
When creating or updating a truth doc, inspect the routed truth kind and use the matching template under the configured Truthmark templates root.
Supported kinds: behavior, contract, architecture, workflow, operations, and test-behavior.
Treat the HTML comments under each template section as normative authoring guidance for that section.
Align existing docs to that template and write or repair section content so it satisfies the comment guidance while preserving accurate authored content.
If the template is missing, use Scope, Product Decisions, Rationale, and the kind-specific current-truth section.
Teams may edit the template files under docs/templates/ to define their local truth-doc standards.
Teams may edit template files under the configured Truthmark templates root to define their local truth-doc standards.
Truth-doc shape repair gate:
- Truth Document may restructure only truth docs for the implemented behavior being documented.
- repair shape in place only after the ownership gate confirms the doc is the right bounded owner
@@ -61,9 +61,9 @@ Maintain architecture docs only for structure-level changes: system structure, m
Keep ordinary behavior, endpoints, UI copy, validation rules, and bug fixes in behavior or contract docs unless they change those boundaries.
Truthmark hierarchy hints:
- Config, when present: .truthmark/config.yml
- Root route index, when present: docs/truthmark/areas.md
- Area route files, when present: docs/truthmark/areas/**/*.md
- Truth docs, when present: docs/truth/**/*.md
- Root route index, when present: docs/truthmark/routes/areas.md
- Area route files, when present: docs/truthmark/routes/areas/**/*.md
- Truth docs, when present: docs/truthmark/truth/**/*.md
Decision truth lives in the canonical doc it governs; date active decisions inline when added or changed.
Do not create separate active-decision ADR/planning logs; replace the active decision and let Git history carry the audit trail.
Update Product Decisions and Rationale when a decision changes behavior.
@@ -1,6 +1,6 @@
# Truthmark Document Report Template
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Report completion in this shape:
```md
@@ -10,23 +10,23 @@ Implementation reviewed:
- src/routing/area-resolver.ts
Ownership reviewed:
- docs/truthmark/areas.md
- docs/truthmark/routes/areas.md
Truth docs created:
- docs/truth/contracts.md
- docs/truthmark/truth/contracts.md
Truth docs updated:
- docs/truth/check-diagnostics.md
- docs/truthmark/truth/check-diagnostics.md
Truth docs restructured:
- docs/truth/check-diagnostics.md
- docs/truthmark/truth/check-diagnostics.md
Routing updated:
- docs/truthmark/areas.md
- docs/truthmark/routes/areas.md
Evidence checked:
- Claim: Route resolution behavior is documented in the contracts truth doc.
Evidence: src/routing/area-resolver.ts:14 / docs/truthmark/areas.md:9
Evidence: src/routing/area-resolver.ts:14 / docs/truthmark/routes/areas.md:9
Result: supported
Helper scripts:
@@ -1,6 +1,6 @@
# Truthmark Document Subagents And Leases
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
OpenCode subagent mode:
- use automatically when this workflow runs in OpenCode and the parent agent chooses bounded subagent fan-out
+5 -6
View File
@@ -3,25 +3,24 @@ name: truthmark-preview
description: Use when the user explicitly asks to preview likely workflow routing, target files, writes, or subagent use before edits. Not for validation, automatic gates, final correctness, or replacing Truth Check.
argument-hint: Optional requested outcome, code area, doc path, or routing question
user-invocable: true
truthmark-version: 1.6.1
truthmark-version: 2.1.0
---
# Truthmark Preview
Use this skill only when the user explicitly asks to preview Truthmark routing or workflow choice before edits.
Invocations: OpenCode /skill truthmark-preview; Codex /truthmark-preview or $truthmark-preview; Claude Code /truthmark-preview; GitHub Copilot /truthmark-preview; Gemini CLI /truthmark:preview.
Quick procedure:
- Follow repository instruction files that exist in this checkout; do not assume any optional policy path exists.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist; then inspect only the truth docs or implementation files needed to preview ownership.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist; then inspect only the truth docs or implementation files needed to preview ownership.
- Truth Preview is read-only; this report is intended, not authorized.
- must not edit files and must not issue write leases; do not run Truth Sync automatically, replace Truth Check, claim final correctness, or mutate code.
- Use optional read-only route-auditor evidence only when it reduces context or clarifies ownership.
- Hand off to the selected workflow after user approval.
Progressive disclosure:
- support/procedure.md
- support/report-template.md
- support/subagents-and-leases.md
- support/procedure.md — read before edits or detailed auditing; contains core quality gates
- support/report-template.md — read before the final report
- support/subagents-and-leases.md — read only when using subagents, leases, or accepting worker output
@@ -1,6 +1,6 @@
# Truthmark Preview Procedure
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Use this skill only when the user explicitly asks to preview Truthmark routing or workflow choice before edits.
@@ -15,8 +15,8 @@ Purpose:
Read:
- .truthmark/config.yml, only when present
- docs/truthmark/areas.md, only when present
- relevant child route files under docs/truthmark/areas/, only when present
- docs/truthmark/routes/areas.md, only when present
- relevant child route files under docs/truthmark/routes/areas/, only when present
- relevant truth docs and implementation files needed to preview ownership
- Repository instruction files and explicitly configured policy docs remain instruction authority when present; do not assume a repository uses any particular policy path.
Implementation code and canonical truth docs are inspected evidence for current behavior; they do not silently override workflow write boundaries.
@@ -38,6 +38,6 @@ Suggested subagent use:
Truthmark hierarchy hints:
- Config, when present: .truthmark/config.yml
- Root route index, when present: docs/truthmark/areas.md
- Area route files, when present: docs/truthmark/areas/**/*.md
- Truth docs, when present: docs/truth/**/*.md
- Root route index, when present: docs/truthmark/routes/areas.md
- Area route files, when present: docs/truthmark/routes/areas/**/*.md
- Truth docs, when present: docs/truthmark/truth/**/*.md
@@ -1,6 +1,6 @@
# Truthmark Preview Report Template
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Report completion in this shape:
```md
@@ -18,15 +18,15 @@ Why this workflow:
- forbidden adjacency considered: must not edit functional code
Likely route owner:
- route file: docs/truthmark/areas.md
- truth doc: docs/truth/example.md
- route file: docs/truthmark/routes/areas.md
- truth doc: docs/truthmark/truth/example.md
- confidence: medium
Expected write classes:
- truth docs
Expected target files:
- docs/truth/example.md
- docs/truthmark/truth/example.md
Suggested subagent use:
- read-only verifiers: truth_route_auditor
@@ -1,6 +1,6 @@
# Truthmark Preview Subagents And Leases
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
OpenCode subagent mode:
- use automatically when this workflow runs in OpenCode and the parent agent chooses bounded subagent fan-out
+4 -5
View File
@@ -3,24 +3,23 @@ name: truthmark-realize
description: Use when the user explicitly asks to realize Truthmark truth docs into code, including /truthmark-realize, $truthmark-realize, or /truthmark:realize. Not for syncing docs after code changes, documenting existing code, topology repair, or truth audits.
argument-hint: Optional truth doc path, area, or desired code behavior to realize
user-invocable: true
truthmark-version: 1.6.1
truthmark-version: 2.1.0
---
# Truthmark Realize
Use this skill only when the user explicitly asks to realize truth docs into code.
Invocations: OpenCode /skill truthmark-realize; Codex /truthmark-realize or $truthmark-realize; Claude Code /truthmark-realize; GitHub Copilot /truthmark-realize; Gemini CLI /truthmark:realize.
Quick procedure:
- Follow repository instruction files that exist in this checkout; do not assume any optional policy path exists.
- Read the source truth docs, inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist, then inspect tests and relevant functional code directly.
- Read the source truth docs, inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist, then inspect tests and relevant functional code directly.
- Truth docs lead; code follows.
- may write functional code only; must not edit truth docs or truth routing while realizing those docs.
- Read support/procedure.md before changing code.
- Read support/report-template.md before the final report.
Progressive disclosure:
- support/procedure.md
- support/report-template.md
- support/procedure.md — read before edits or detailed auditing; contains core quality gates
- support/report-template.md — read before the final report
@@ -1,6 +1,6 @@
# Truthmark Realize Procedure
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
# Truthmark Realize
@@ -17,7 +17,7 @@ Truth Realize is doc-first:
Workflow:
1. Read the updated truth docs named by the user, or infer the relevant docs from configured route files when present.
2. Inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist; then read tests and the relevant functional code.
2. Inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist; then read tests and the relevant functional code.
3. Repository instruction files and explicitly configured policy docs remain instruction authority when present; do not assume a repository uses any particular policy path.
Implementation code and canonical truth docs are inspected evidence for current behavior; they do not silently override workflow write boundaries.
Truth-doc ownership gate:
@@ -31,9 +31,9 @@ Truth-doc ownership gate:
7. Report changed code files and verification steps.
Truthmark hierarchy hints:
- Config, when present: .truthmark/config.yml
- Root route index, when present: docs/truthmark/areas.md
- Area route files, when present: docs/truthmark/areas/**/*.md
- Truth docs, when present: docs/truth/**/*.md
- Root route index, when present: docs/truthmark/routes/areas.md
- Area route files, when present: docs/truthmark/routes/areas/**/*.md
- Truth docs, when present: docs/truthmark/truth/**/*.md
Read and write boundaries:
@@ -1,6 +1,6 @@
# Truthmark Realize Report Template
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Report completion in this shape:
@@ -8,7 +8,7 @@ Report completion in this shape:
Truth Realize: completed
Truth docs used:
- docs/truth/authentication/session-timeout.md
- docs/truthmark/truth/authentication/session-timeout.md
Code updated:
- src/auth/session.ts
@@ -3,25 +3,24 @@ name: truthmark-structure
description: Use when routing or truth ownership is missing, stale, broad, overloaded, catch-all, unrouteable, mixed-owner, needs split/repair, or needs new area setup. Not for documenting implemented behavior, syncing a code diff, or realizing docs into code.
argument-hint: Optional area, directory, or routing concern
user-invocable: true
truthmark-version: 1.6.1
truthmark-version: 2.1.0
---
# Truthmark Structure
Use this skill to design or repair Truthmark area structure.
Invocations: OpenCode /skill truthmark-structure; Codex /truthmark-structure or $truthmark-structure; Claude Code /truthmark-structure; GitHub Copilot /truthmark-structure; Gemini CLI /truthmark:structure.
Quick procedure:
- Follow repository instruction files that exist in this checkout; do not assume any optional policy path exists.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist; then inspect current docs and relevant code directly.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist; then inspect current docs and relevant code directly.
- Define areas by product or behavior ownership, not by mechanical directory mirroring.
- Do not edit functional code.
- Read support/procedure.md before writing route or starter truth-doc changes.
- Read support/report-template.md before the final report.
Progressive disclosure:
- support/procedure.md
- support/report-template.md
- support/subagents-and-leases.md
- support/procedure.md — read before edits or detailed auditing; contains core quality gates
- support/report-template.md — read before the final report
- support/subagents-and-leases.md — read only when using subagents, leases, or accepting worker output
@@ -1,6 +1,6 @@
# Truthmark Structure Procedure
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Use this skill to design or repair Truthmark area structure.
Invocations: OpenCode /skill truthmark-structure; Codex /truthmark-structure or $truthmark-structure; Claude Code /truthmark-structure; GitHub Copilot /truthmark-structure; Gemini CLI /truthmark:structure.
@@ -8,20 +8,20 @@ Truth Structure is agent-native:
- inspect repository layout, current docs, Truthmark config and route files when present, and relevant code directly
- Repository instruction files and explicitly configured policy docs remain instruction authority when present; do not assume a repository uses any particular policy path.
Implementation code and canonical truth docs are inspected evidence for current behavior; they do not silently override workflow write boundaries.
- inspect the configured root route index at docs/truthmark/areas.md and relevant child route files under docs/truthmark/areas/ when they exist
- inspect the configured root route index at docs/truthmark/routes/areas.md and relevant child route files under docs/truthmark/routes/areas/ when they exist
- define areas by product or behavior ownership, not by mechanical directory mirroring
- create or repair docs/truthmark/areas.md
- create or repair docs/truthmark/routes/areas.md
- create starter truth docs when useful and when they belong in the canonical current-truth surface
- Starter truth docs must use closed YAML frontmatter bounded by opening and closing --- lines; include status, doc_type, last_reviewed, and source_of_truth inside that frontmatter.
- Starter truth docs must include ## Product Decisions and ## Rationale sections.
When creating or updating a truth doc, inspect the routed truth kind and use the matching `docs/templates/<kind>-doc.md` template.
When creating or updating a truth doc, inspect the routed truth kind and use the matching template under the configured Truthmark templates root.
Supported kinds: behavior, contract, architecture, workflow, operations, and test-behavior.
Treat the HTML comments under each template section as normative authoring guidance for that section.
Align existing docs to that template and write or repair section content so it satisfies the comment guidance while preserving accurate authored content.
If the template is missing, use Scope, Product Decisions, Rationale, and the kind-specific current-truth section.
Teams may edit the template files under docs/templates/ to define their local truth-doc standards.
- use docs/truth/**, docs/architecture/**, or docs/standards/** for current truth destinations
Teams may edit template files under the configured Truthmark templates root to define their local truth-doc standards.
- use docs/truthmark/truth/** for current truth destinations
- use only canonical current-truth destinations for starter truth docs
- keep active Product Decisions and Rationale in the canonical doc that owns the behavior
- preserve unrelated authored content
@@ -41,7 +41,7 @@ Do not:
- do not create generic catch-all docs
- do not treat README files as Sync targets
## Topology Governance
Truth Structure owns documentation topology. Do not depend on humans to manually organize docs/truth. Treat the configured truth root as a managed semantic root.
Truth Structure owns documentation topology. Do not depend on humans to manually organize docs/truthmark/truth. Treat the configured truth root as a managed semantic root.
Inspect controllers, routes, handlers, services, packages, tests, existing truth docs, and route files; infer product and domain ownership from behavior boundaries, not from mechanical directory mirroring.
When topology pressure exists, repair structure before creating or extending truth docs.
Truth-doc ownership gate:
@@ -62,7 +62,7 @@ Topology pressure signals:
- the configured truth root has many direct non-index docs
- a changed controller, route, or service cannot map to a specific behavior doc
- Truth Sync would need to create a new generic truth doc because routing is too broad
- endpoint or controller names reveal domains missing from docs/truthmark/areas/**
- endpoint or controller names reveal domains missing from docs/truthmark/routes/areas/**
Use these review thresholds as guidance:
- more than 10 direct truth docs in one folder
- more than 15 leaf areas in one child route file
@@ -71,7 +71,7 @@ Use these review thresholds as guidance:
Repair rules:
- split broad, overloaded, or catch-all areas into behavior-owned child route files
- split mixed-owner truth docs into bounded owner docs before adding new behavior claims
- create route files under docs/truthmark/areas/ when a product/domain boundary is clear
- create route files under docs/truthmark/routes/areas/ when a product/domain boundary is clear
- create behavior truth docs under the configured truth root only when behavior lacks a current doc
- README.md files are indexes, not Truth Sync targets
- prefer bounded leaf truth docs at <truth-root>/<domain>/<behavior>.md
@@ -102,9 +102,9 @@ Portable fallback:
- Use a subagent only when the host supports that pattern; otherwise perform the topology repair inline.
Truthmark hierarchy hints:
- Config, when present: .truthmark/config.yml
- Root route index, when present: docs/truthmark/areas.md
- Area route files, when present: docs/truthmark/areas/**/*.md
- Truth docs, when present: docs/truth/**/*.md
- Root route index, when present: docs/truthmark/routes/areas.md
- Area route files, when present: docs/truthmark/routes/areas/**/*.md
- Truth docs, when present: docs/truthmark/truth/**/*.md
Decision truth lives in the canonical doc it governs; date active decisions inline when added or changed.
Do not create separate active-decision ADR/planning logs; replace the active decision and let Git history carry the audit trail.
Update Product Decisions and Rationale when a decision changes behavior.
@@ -1,32 +1,32 @@
# Truthmark Structure Report Template
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Report completion in this shape:
```md
Truth Structure: completed
Topology reviewed:
- controllers: src/auth/**
- docs root: docs/truth
- route files: docs/truthmark/areas.md
- docs root: docs/truthmark/truth
- route files: docs/truthmark/routes/areas.md
Areas reviewed:
- src/auth/**
Routing updated:
- docs/truthmark/areas.md
- docs/truthmark/routes/areas.md
Initial truth boundary:
- Area: Authentication
- Code: src/auth/**
- Truth owner: docs/truth/authentication/session.md
- Truth owner: docs/truthmark/truth/authentication/session.md
- Scope: session behavior only
Truth docs created:
- docs/truth/authentication/session.md
- docs/truthmark/truth/authentication/session.md
Truth docs split:
- docs/truth/authentication/README.md -> docs/truth/authentication/session.md
- docs/truthmark/truth/authentication/README.md -> docs/truthmark/truth/authentication/session.md
Truth docs restructured:
- docs/truth/authentication/README.md
- docs/truthmark/truth/authentication/README.md
Evidence checked:
- Claim: Session behavior belongs to a dedicated Authentication truth owner.
Evidence: src/auth/** / docs/truthmark/areas.md:7
Evidence: src/auth/** / docs/truthmark/routes/areas.md:7
Result: supported
Topology decisions:
- Added an Authentication area because session behavior has a distinct code surface and truth owner.
@@ -1,6 +1,6 @@
# Truthmark Structure Subagents And Leases
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
OpenCode subagent mode:
- use automatically when this workflow runs in OpenCode and the parent agent chooses bounded subagent fan-out
+8 -9
View File
@@ -3,29 +3,28 @@ name: truthmark-sync
description: Use automatically at finish-time after functional code changes, or explicit /truthmark-sync, $truthmark-sync, or /truthmark:sync. Skip docs-only, formatting-only, behavior-preserving renames, missing config, and no-code changes. Not for doc-first realization or manual topology design.
argument-hint: Optional changed-code area, truth-doc area, or sync focus
user-invocable: true
truthmark-version: 1.6.1
truthmark-version: 2.1.0
---
# Truthmark Sync
Use this skill automatically before finishing when functional code changed since the last successful Truth Sync. Also run it immediately when the user explicitly invokes Truth Sync.
Invocations: OpenCode /skill truthmark-sync; Codex /truthmark-sync or $truthmark-sync; Claude Code /truthmark-sync; GitHub Copilot /truthmark-sync; Gemini CLI /truthmark:sync.
Quick procedure:
- Follow repository instruction files that exist in this checkout; do not assume any optional policy path exists.
- Skip docs-only, formatting-only, behavior-preserving renames with no truth impact, missing config, and no-code changes.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/areas.md; docs/truthmark/areas/) only when they exist; then inspect relevant canonical docs directly.
- Inspect .truthmark/config.yml and configured route files (docs/truthmark/routes/areas.md; docs/truthmark/routes/areas/) only when they exist; then inspect relevant canonical docs directly.
- direct checkout inspection is the canonical path; do not require the truthmark binary.
- May write canonical truth docs and truth routing files only; must not rewrite functional code.
- Read support/procedure.md before editing truth docs.
- Read support/subagents-and-leases.md before dispatching or accepting worker output.
- Read support/subagents-and-leases.md only when dispatching or accepting worker output.
- Read support/report-template.md before the final report.
Progressive disclosure:
- support/procedure.md
- support/report-template.md
- support/subagents-and-leases.md
- helper-manifest.yml
- support/helper-policy.md
- support/procedure.md — read before edits or detailed auditing; contains core quality gates
- support/report-template.md — read before the final report
- support/subagents-and-leases.md — read only when using subagents, leases, or accepting worker output
- helper-manifest.yml — read only when invoking helper validators or validating helper registration
- support/helper-policy.md — read only when invoking helper validators or reporting helper status
@@ -1,8 +1,8 @@
# Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
# Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
helpers:
validate-sync-report:
optional: true
runner: truthmark>=1.6.1
runner: truthmark>=2.1.0
command:
argv:
- truthmark
@@ -17,7 +17,7 @@ helpers:
fallback: "manually validate support/report-template.md and check Evidence checked entries match Claim, indented Evidence, and Result: supported | narrowed | removed | blocked"
validate-write-lease:
optional: true
runner: truthmark>=1.6.1
runner: truthmark>=2.1.0
command:
argv:
- truthmark
@@ -1,6 +1,6 @@
# Optional Helper CLI Policy
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Optional helper CLI commands may collect deterministic checkout facts or validate artifacts. If the Truthmark CLI is unavailable or too old for a declared helper, continue manually using this procedure and report which helper was skipped. Helper output is derived evidence; it does not override direct checkout inspection, workflow write boundaries, or parent acceptance.
@@ -11,8 +11,8 @@ Runner detection:
- Do not fail the workflow solely because a helper cannot run.
Available helpers:
- validate-sync-report: optional truthmark>=1.6.1; manual fallback: manually validate support/report-template.md and check Evidence checked entries match Claim, indented Evidence, and Result: supported | narrowed | removed | blocked
- validate-write-lease: optional truthmark>=1.6.1; manual fallback: manually compare declared allowedWrites and forbiddenWrites with the actual changed files
- validate-sync-report: optional truthmark>=2.1.0; manual fallback: manually validate support/report-template.md and check Evidence checked entries match Claim, indented Evidence, and Result: supported | narrowed | removed | blocked
- validate-write-lease: optional truthmark>=2.1.0; manual fallback: manually compare declared allowedWrites and forbiddenWrites with the actual changed files
Final reports should include helper status when helpers are declared for this workflow:
@@ -1,6 +1,6 @@
# Truthmark Sync Procedure
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Use this skill automatically before finishing when functional code changed since the last successful Truth Sync. Also run it immediately when the user explicitly invokes Truth Sync.
Invocations: OpenCode /skill truthmark-sync; Codex /truthmark-sync or $truthmark-sync; Claude Code /truthmark-sync; GitHub Copilot /truthmark-sync; Gemini CLI /truthmark:sync.
@@ -34,12 +34,12 @@ Product Decisions/Rationale preservation gate:
- remove or narrow a decision or rationale only when checkout evidence shows it is stale or unsupported, and report the exact claim, evidence, and result
- if ownership of a decision or rationale is unclear, block with manual-review files instead of deleting it or guessing
- after the edit, verify every touched truth doc still has Product Decisions and Rationale sections and every pre-existing entry is preserved, moved, narrowed, removed with evidence, or blocked
When creating or updating a truth doc, inspect the routed truth kind and use the matching `docs/templates/<kind>-doc.md` template.
When creating or updating a truth doc, inspect the routed truth kind and use the matching template under the configured Truthmark templates root.
Supported kinds: behavior, contract, architecture, workflow, operations, and test-behavior.
Treat the HTML comments under each template section as normative authoring guidance for that section.
Align existing docs to that template and write or repair section content so it satisfies the comment guidance while preserving accurate authored content.
If the template is missing, use Scope, Product Decisions, Rationale, and the kind-specific current-truth section.
Teams may edit the template files under docs/templates/ to define their local truth-doc standards.
Teams may edit template files under the configured Truthmark templates root to define their local truth-doc standards.
Truth-doc shape repair gate:
- Truth Sync may restructure only truth docs impacted by the current functional-code change.
- repair shape in place only after the ownership gate confirms the doc is the right bounded owner
@@ -72,9 +72,9 @@ Helper status reporting:
- Helper output is derived evidence and never replaces direct checkout inspection, evidence review, or parent acceptance.
Truthmark hierarchy hints:
- Config, when present: .truthmark/config.yml
- Root route index, when present: docs/truthmark/areas.md
- Area route files, when present: docs/truthmark/areas/**/*.md
- Truth docs, when present: docs/truth/**/*.md
- Root route index, when present: docs/truthmark/routes/areas.md
- Area route files, when present: docs/truthmark/routes/areas/**/*.md
- Truth docs, when present: docs/truthmark/truth/**/*.md
Decision truth lives in the canonical doc it governs; date active decisions inline when added or changed.
Do not create separate active-decision ADR/planning logs; replace the active decision and let Git history carry the audit trail.
Update Product Decisions and Rationale when a decision changes behavior.
@@ -1,6 +1,6 @@
# Truthmark Sync Report Template
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
Report completion in this shape:
```md
@@ -10,14 +10,14 @@ Changed code reviewed:
- src/auth/session.ts
Ownership reviewed:
- docs/truthmark/areas.md
- docs/truthmark/routes/areas.md
Truth docs updated:
- docs/truth/repository/overview.md
- docs/truthmark/truth/repository/overview.md
Evidence checked:
- Claim: Session timeout behavior is documented in the mapped repository truth doc.
Evidence: src/auth/session.ts:12 / docs/truthmark/areas.md:11
Evidence: src/auth/session.ts:12 / docs/truthmark/routes/areas.md:11
Result: supported
Helper scripts:
@@ -34,7 +34,7 @@ Reason:
- routing repair is not allowed
Files requiring manual review:
- docs/truthmark/areas.md
- docs/truthmark/routes/areas.md
Next action:
- update routing metadata and rerun Truth Sync
@@ -1,6 +1,6 @@
# Truthmark Sync Subagents And Leases
Generated by Truthmark 1.6.1. Rerun truthmark init after upgrades.
Generated by Truthmark 2.1.0. Rerun truthmark init after upgrades.
OpenCode subagent mode:
- use automatically when this workflow runs in OpenCode and the parent agent chooses bounded subagent fan-out