Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
dc85b9b
docs: spec and plan the technical-design step, with its glossary term…
vircung Sep 17, 2026
0097c52
docs: dispose the plan-adversary round one findings
vircung Sep 17, 2026
1263e69
docs: re-derive the duty table count against the file
vircung Sep 21, 2026
9972d9e
docs: dispose the plan-adversary round two findings
vircung Sep 21, 2026
72b4817
docs: settle the decline arm, this repo's declaration, and the audit-…
vircung Sep 24, 2026
1fbb6c6
docs: dispose the plan-adversary round three findings
vircung Sep 24, 2026
cd9a4cc
docs: count four cards and let a declaration live in either CLAUDE.md
vircung Sep 24, 2026
8cc820a
docs: dispose the plan-adversary round four findings
vircung Sep 25, 2026
3f65137
docs: dispose the plan-adversary round five findings
vircung Sep 25, 2026
efcfba2
docs: dispose the plan-adversary round six findings
vircung Sep 25, 2026
32c3611
docs: record the gate's dismissed hits before the confirming round
vircung Sep 25, 2026
916ca41
docs: dispose the plan-adversary round seven findings and the indepen…
vircung Sep 25, 2026
9ed9dab
docs: record the code-project validation as an open step the plan doe…
vircung Sep 25, 2026
ed68502
docs: dispose the plan-adversary round eight findings
vircung Sep 25, 2026
e7d690c
docs: close the plan's review loop at concerns resolved, with the tra…
vircung Sep 25, 2026
65c3fab
docs: approve the technical-design plan
vircung Sep 25, 2026
3bee99d
feat(working-process): add the technical-design rule
vircung Sep 25, 2026
9e0b81a
feat(working-process): count docs/technical-designs among Process dir…
vircung Sep 25, 2026
03a91af
feat(working-process): give technical designs the process field set
vircung Sep 25, 2026
4f294f9
feat(working-process): branch the lifecycle on the document class
vircung Sep 25, 2026
038bc69
feat(working-process): add the technical-design pointer pair
vircung Sep 25, 2026
b713677
feat(working-process): record a pair audit in one integrity stamp
vircung Sep 25, 2026
2a8f12d
fix(working-process): separate the pair clause from the integrity note
vircung Sep 25, 2026
0236205
feat(working-process): run the consumption gate in passes
vircung Sep 25, 2026
54a4203
feat(working-process): make the author check the pointer pair
vircung Sep 25, 2026
17f034d
feat(working-process): offer the technical design at the consumption …
vircung Sep 25, 2026
952b193
feat(working-process): name the technical design's author and reviewer
vircung Sep 25, 2026
5a19bcc
feat(working-process): hold a finding from either judged document
vircung Sep 25, 2026
41ff529
feat(working-process): let the architect card name the judged-documen…
vircung Sep 25, 2026
ed6f743
feat(working-process): audit a design spec and its technical design a…
vircung Sep 25, 2026
9feb974
feat(working-process): read origin as a list and cover the design's p…
vircung Sep 25, 2026
85d8401
feat(working-process): check the pointer pair in the propagation audit
vircung Sep 25, 2026
17f06aa
feat(working-process): cover technical designs in the status pass
vircung Sep 25, 2026
4fff48d
docs(working-process): put the technical design in the README and gri…
vircung Sep 25, 2026
d87c0b3
docs: declare that this repository skips the technical-design offer
vircung Sep 25, 2026
a955149
chore(working-process): changelog and dogfooding version for the tech…
vircung Sep 25, 2026
94f225d
fix(working-process): apply the final review's wording fixes
vircung Sep 25, 2026
bcb1a3f
Merge branch 'feature/technical-design-step' into develop
vircung Sep 25, 2026
84f1df5
docs: give develop ownership of the dev prerelease counter
vircung Sep 25, 2026
41cae57
docs(working-process): plan-coverage spec, architect round 1
vircung Sep 25, 2026
f8f1578
docs(working-process): plan-coverage spec, round 1 fix wave
vircung Sep 25, 2026
cd9aefb
docs(working-process): plan-coverage spec, architect round 2
vircung Sep 25, 2026
d511922
docs(working-process): plan-coverage spec, round 2 fix wave
vircung Sep 25, 2026
f101d45
docs(working-process): plan-coverage spec, architect round 3
vircung Sep 25, 2026
417e2bd
docs(working-process): plan-coverage spec, round 3 fix wave
vircung Sep 25, 2026
734558b
docs(working-process): close plan-coverage spec review loop
vircung Sep 25, 2026
b7116f3
docs(working-process): plan-coverage spec, integrity audit dispositions
vircung Sep 26, 2026
97945b9
docs(working-process): plan-coverage spec, gate fix
vircung Sep 26, 2026
059aec1
docs(working-process): stamp plan-coverage spec integrity
vircung Sep 26, 2026
be41258
docs(working-process): plan-coverage spec, post-audit contract fixes
vircung Sep 26, 2026
48937a8
docs(working-process): plan-coverage spec, gate dispositions
vircung Sep 26, 2026
daee595
docs(working-process): plan-coverage spec, second audit dispositions
vircung Sep 26, 2026
938c566
docs(working-process): plan-coverage spec, second audit ledger
vircung Sep 26, 2026
a2d37f6
docs(working-process): plan-coverage spec, rewrap
vircung Sep 26, 2026
8ff587f
docs(working-process): restamp plan-coverage spec integrity
vircung Sep 26, 2026
69b8dcb
docs(working-process): glossary terms for plan coverage
vircung Sep 26, 2026
670a07a
docs(working-process): plan-coverage implementation plan
vircung Sep 26, 2026
91661fa
docs(working-process): plan-coverage plan, adversary round 1 disposit…
vircung Sep 26, 2026
40f9c65
docs(working-process): plan-coverage plan, adversary round 2 disposit…
vircung Sep 26, 2026
93826af
docs(working-process): plan-coverage plan, adversary round 3
vircung Sep 26, 2026
b7ddddd
docs(working-process): plan-coverage plan, held hit blocks the consum…
vircung Sep 26, 2026
c4f4897
docs(working-process): plan-coverage plan, adversary loop closed
vircung Sep 26, 2026
928f9e7
docs(working-process): plan-coverage plan, second-opinion fixes
vircung Sep 26, 2026
de3c906
docs(working-process): approve plan-coverage plan
vircung Sep 26, 2026
dd54681
docs(working-process): plan-coverage spec, third audit dispositions
vircung Sep 26, 2026
137ad6c
docs(working-process): plan-coverage spec, ledger spacing
vircung Sep 26, 2026
003a839
docs(working-process): plan-coverage spec and plan, withdrawal record…
vircung Sep 26, 2026
eef6b16
docs(working-process): plan-coverage plan, gate fix
vircung Sep 26, 2026
f0ee908
docs(working-process): restamp plan-coverage spec integrity
vircung Sep 26, 2026
921756c
feat(working-process): decision register in the lifecycle rule
vircung Sep 26, 2026
3a7158f
feat(working-process): plan annotations for decision coverage
vircung Sep 26, 2026
196aeaa
feat(working-process): held gate line for coverage hits
vircung Sep 26, 2026
91f7983
feat(working-process): declared table relations in the technical-desi…
vircung Sep 26, 2026
1d2789b
feat(working-process): decision coverage and table closure duties
vircung Sep 26, 2026
af08eff
feat(working-process): held coverage hits in the propagation gate
vircung Sep 26, 2026
e3ab734
feat(working-process): plan-adversary judges realization of registere…
vircung Sep 26, 2026
768b3bd
feat(working-process): integrity auditor reads the decision register …
vircung Sep 26, 2026
4a05325
feat(working-process): propagation duties checklist gains duties 10 a…
vircung Sep 26, 2026
0be76c0
feat(working-process): grilling session updates the decision register
vircung Sep 26, 2026
0651a76
docs(working-process): README and changelog for plan coverage
vircung Sep 26, 2026
f8e743b
fix(working-process): tighten the propagation auditor's report contract
vircung Sep 26, 2026
3fe9602
docs(working-process): plan-coverage plan, Task 13 harness and record
vircung Sep 26, 2026
7237a7c
docs(working-process): plan-coverage spec D31 and plan Tasks 14-16
vircung Sep 26, 2026
b4a0008
feat(working-process): decision coverage derivation script
vircung Sep 26, 2026
d858656
feat(working-process): the propagation auditor runs the coverage script
vircung Sep 26, 2026
d737769
fix(working-process): coverage duty skips technical designs and keeps…
vircung Sep 26, 2026
4bf5c3a
test(working-process): cover a plan under docs/plans in the technical…
vircung Sep 26, 2026
c486e67
docs(working-process): plan-coverage plan, Task 16 record
vircung Sep 26, 2026
b12ab97
fix(working-process): coverage script encoding, register hits and Rea…
vircung Sep 26, 2026
57d66f8
docs(working-process): README requirements and auditor hit ordering
vircung Sep 26, 2026
2f296f0
chore: ignore __pycache__
vircung Sep 26, 2026
ed414df
docs(working-process): plan-coverage plan, final review record
vircung Sep 26, 2026
5b57f5b
docs(working-process): plan-coverage spec, fourth audit dispositions
vircung Sep 28, 2026
d4925c1
docs(working-process): plan-coverage spec, gate fix
vircung Sep 28, 2026
7791881
docs(working-process): restamp plan-coverage spec integrity
vircung Sep 28, 2026
96fb5e8
fix(working-process): annotate, docstring and pathlib decision-covera…
vircung Sep 28, 2026
a2dbf18
test(working-process): annotate, docstring, pathlib and parametrize d…
vircung Sep 28, 2026
cb40441
fix(working-process): lexical path folding back on os.path.normpath
vircung Sep 28, 2026
1f3add6
docs(working-process): plan-coverage plan, python review record
vircung Sep 28, 2026
52832de
Merge branch 'feature/plan-coverage' into develop
vircung Sep 28, 2026
8df5e97
chore(working-process): dogfooding version for plan coverage
vircung Sep 28, 2026
c2739d6
docs(working-process): process-setup design spec
vircung Sep 28, 2026
f0a57d4
docs(working-process): process-setup spec grilled, glossary terms
vircung Sep 28, 2026
3db8141
docs(working-process): process-setup spec, architect round 1 and gate…
vircung Sep 28, 2026
44f94f5
docs(working-process): process-setup spec, architect round 2
vircung Sep 28, 2026
64e486c
docs(working-process): process-setup spec, architect round 3
vircung Sep 28, 2026
d43ae0a
docs(working-process): process-setup spec, architect loop closed
vircung Sep 28, 2026
cfc9b9a
docs(working-process): process-setup spec, integrity audit dispositions
vircung Sep 28, 2026
adc554b
docs(working-process): process-setup spec, gate fix after integrity wave
vircung Sep 28, 2026
a480b8e
docs(working-process): process-setup spec, second integrity audit dis…
vircung Sep 28, 2026
444936b
docs(working-process): process-setup spec, integrity stamp
vircung Sep 28, 2026
1598f90
docs(working-process): process-setup implementation plan
vircung Sep 29, 2026
8ff3711
docs(working-process): process-setup plan, gate fixes
vircung Sep 29, 2026
81cb57e
docs(working-process): process-setup plan, adversary round 1
vircung Sep 29, 2026
acb2bf5
docs(working-process): process-setup plan, adversary round 1 fixes
vircung Sep 29, 2026
424c60a
docs(working-process): process-setup plan, adversary round 2
vircung Sep 29, 2026
0e093ed
docs(working-process): process-setup plan, adversary round 2 fixes
vircung Sep 29, 2026
51fd542
docs(working-process): process-setup plan, gate fixes before the conf…
vircung Sep 29, 2026
402168b
docs(working-process): process-setup plan, adversary round 3
vircung Sep 29, 2026
225a969
docs(working-process): process-setup plan, git ceiling in the test he…
vircung Sep 29, 2026
3e943dd
docs(working-process): process-setup plan approved
vircung Sep 29, 2026
d59245c
feat(working-process): settings key registry
vircung Sep 29, 2026
cbe919a
feat(working-process): settings loader with hook mode and --print
vircung Sep 29, 2026
a2e51da
fix(working-process): portable registry_field sed and single-pass res…
vircung Sep 29, 2026
976f0bb
feat(working-process): settings loader reads the main checkout's pers…
vircung Sep 29, 2026
5a9f459
feat(working-process): settings loader validates a file for its scope
vircung Sep 29, 2026
9b0c78a
fix(working-process): scan_file feeds the candidate on awk's stdin
vircung Sep 29, 2026
f0eb535
feat(working-process): settings loader writes an answer with --set
vircung Sep 29, 2026
39d2e14
fix(working-process): --set validates exact values, withholds a faile…
vircung Sep 29, 2026
567898c
feat(working-process): process-settings rule
vircung Sep 29, 2026
ae75b12
feat(working-process): workflow consents and the technical-design dec…
vircung Sep 29, 2026
d2568cd
feat(working-process): the propagation gate's tier is a settings key
vircung Sep 29, 2026
0647dd6
feat(working-process): per-round commit consent and the docs-branch m…
vircung Sep 29, 2026
b71311f
fix(working-process): docs-branch merge clause names the overridden note
vircung Sep 29, 2026
c98c400
feat(working-process): a settings key joins the directory-mode signals
vircung Sep 29, 2026
6fa8e57
feat(project-memory): the core rule reads dir.docs/memory
vircung Sep 29, 2026
388067a
feat(standards): the review commands read dir.docs/code-review
vircung Sep 29, 2026
fc88d15
feat(working-process): process-setup skill
vircung Sep 29, 2026
90bf4af
test(working-process): registry citations and references
vircung Sep 29, 2026
840cfc6
docs(working-process): README, changelogs and dogfood version for pro…
vircung Sep 29, 2026
0f2dd0d
docs(working-process): the worktree personal-file sentence names shad…
vircung Sep 29, 2026
b59ddb2
fix(working-process): settings loader passes shellcheck
vircung Sep 29, 2026
7f26df4
fix(working-process): settings loader runs under strict POSIX awk
vircung Sep 29, 2026
b868bd2
test(working-process): regression tests for the final review findings
vircung Sep 29, 2026
2ddd5b5
Merge branch 'feature/process-setup' into develop
vircung Sep 29, 2026
8a2b512
chore: mint release versions - working-process 0.18.0, project-memory…
vircung Sep 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
{
"name": "working-process",
"source": "./plugins/working-process",
"description": "Spec-driven working process on top of superpowers: grilling-session, architect-session, system-designer-session, process-status and sync-rules skills, architect and plan-adversary verdict agents, architect-consult and system-designer-consult consultation agents, propagation-auditor and integrity-auditor audit agents, plus distributed process rules"
"description": "Spec-driven working process on top of superpowers: grilling-session, architect-session, system-designer-session, process-status, process-setup and sync-rules skills, architect and plan-adversary verdict agents, architect-consult and system-designer-consult consultation agents, propagation-auditor and integrity-auditor audit agents, plus distributed process rules"
},
{
"name": "python-standards",
Expand Down
43 changes: 28 additions & 15 deletions .claude/rules/plugin-versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,22 +30,35 @@ paths:
the PR body is assembled from the entries that changed.
- Dogfooding unreleased content needs a changed version string — the
plugin cache keys content by version. A topic branch that dogfoods a
plugin sets `X.Y.Z-dev.<discriminator>` on it — the issue number the
branch name carries, or the branch short-name when the topic has no
issue (e.g. `-dev.design-personas`). The suffix hangs off a version
above the one `develop` currently carries — never a re-suffix of a
version already minted. Widening the discriminator instead of minting
another channel keeps one channel for one purpose; the discriminator
only needs to be unique among parallel topics. The suffix flows into
develop as-is. A topic that does not dogfood never
touches the version. On a version-line merge conflict between parallel
topics, the merging topic's own `-dev.<discriminator>` wins — both
strings are provisional. The release PR strips every `-dev` suffix
while minting the final numbers; the `release-guard` workflow fails
any PR to master that carries a prerelease version or a changed plugin
plugin sets `X.Y.Z-dev.<n>.<discriminator>` on it. The discriminator
is the issue number the branch name carries, or the branch short-name
when the topic has no issue (e.g. `-dev.4.design-personas`); it only
needs to be unique among parallel topics. The suffix hangs off a
version above the one `develop` currently carries — never a re-suffix
of a version already minted. A topic that does not dogfood never
touches the version. The release PR strips every `-dev` suffix while
minting the final numbers; the `release-guard` workflow fails any PR
to master that carries a prerelease version or a changed plugin
without a bump.
- Prerelease grammar: `-<channel>.<discriminator>`. Defined channels:
`dev.<discriminator>` (topic-branch dogfooding, above) and
- `<n>` separates the successive dogfood releases of successive topics,
and `develop` owns it: `n` is one above the highest `-dev.<n>.` the
plugin carries in develop's history, and the increment happens as a
topic merges. A topic takes the number optimistically when it starts
dogfooding and re-takes it at merge if develop moved meanwhile, which
is what makes two parallel topics safe — they may hold the same
number while unmerged, and the merge order settles it. Deriving the
counter from develop rather than from a topic is what gives it an
owner; a counter nobody owns walks backwards.
On a version-line merge conflict between parallel topics, the merging
topic's own string wins and takes the next free number — both strings
are provisional until merge.
The number is its own dot-separated identifier on purpose. Semver
compares numeric identifiers numerically and alphanumeric ones as
text, so `dev.1.x` < `dev.2.x` < `dev.10.x` sorts correctly, while
`dev.<n>-<slug>` would fold the number into an alphanumeric
identifier and sort `1 < 10 < 2`. Measured, not assumed.
- Prerelease grammar: `-<channel>.<identifiers>`. Defined channels:
`dev.<n>.<discriminator>` (topic-branch dogfooding, above) and
`rc.<n>` (release candidate — a freeze of develop dogfooded as one
bundle when a release warrants whole-unit validation; minted by a
release-prep commit and stripped by the release PR like any
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.claude/settings.local.json
.claude/worktrees/
__pycache__/
9 changes: 9 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@ happen (see the plugin-versioning rule). When an isolated workspace is
used, its git worktree lives at `.claude/worktrees/<short-name>/` —
one per topic branch, git-ignored.

## Technical designs

This repository does not get the technical-design offer by default. Its
product is prose: a part's name is its path and behaviour is already the
shape of the contract, so a technical design here would restate the
design spec and the plan. The declaration switches the default offer
off; it is not a ban. Ask for a technical design explicitly and the
step runs as it would anywhere else.

## Authoring skills

When creating or editing a skill in any plugin, use the `skill-creator`
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Marketplace of [Claude Code](https://code.claude.com) plugins by Missing Bits.

| Plugin | Docs | Description |
|--------|------|-------------|
| `working-process` | [README](plugins/working-process/README.md) | Spec-driven working process: grilling-session, architect-session, system-designer-session, process-status and sync-rules skills, architect and plan-adversary verdict agents, two verdict-free consultation agents, propagation-auditor and integrity-auditor audit agents, distributed process rules |
| `working-process` | [README](plugins/working-process/README.md) | Spec-driven working process: grilling-session, architect-session, system-designer-session, process-status, process-setup and sync-rules skills, architect and plan-adversary verdict agents, two verdict-free consultation agents, propagation-auditor and integrity-auditor audit agents, distributed process rules |
| `python-standards` | [README](plugins/python-standards/README.md) | Python coding standards for uv + ruff + pytest + pyright: area skills, code-review stack, plan-review checklist, distributed toolchain rule |
| `salesforce-standards` | [README](plugins/salesforce-standards/README.md) | Salesforce coding standards for the sf CLI toolchain: area skills (Apex, Apex triggers, LWC, Flow, data/security model, legacy UI), code-review stack, plan-review checklist, distributed toolchain rule |
| `project-memory` | [README](plugins/project-memory/README.md) | In-repo project memory: committed Team memory (`docs/memory/`) and per-user Private memory (`.claude/memory/`), with `memory-review-session`, `migrate-memory`, and `redirect-memory` skills, distributed as a Rules payload |
Expand Down
41 changes: 41 additions & 0 deletions docs/domain/adr/0004-ceremonies-follow-the-reader.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
ticket: none
---

# A document's ceremonies follow its next reader

The lifecycle rule branches between specs and plans in several places —
when a re-review offer comes due, what a stale `integrity:` stamp means
at a gate, who owns an unresolved verdict, how chain debt is discharged.
Every one of those branches is binary, and none of them is really about
the file's name. They divide documents by who reads them next. A spec is
read next by a reader who still judges it: the plan-writer who must turn
it into tasks, and the plan-adversary who names the origin of every
finding it makes. A plan is read next by whoever executes it — who may
well notice a mistake, but is promised to no reading of the plan as a
whole.

So the ceremonies a class owes follow not from the existence of a later
reader but from what that reader is guaranteed to read. A judged
document has one: plan-writing reads it whole to turn it into tasks, and
the plan-adversary reads it far enough to name the origin of what it
finds. So that class may close its review chain by an offered pair and
may discharge the debt by declining — the risk accepted is bounded,
since a scheduled reader still faces the part no round re-read. Nothing
after a plan is guaranteed to read the plan whole, so that class owes a
mandatory confirming round instead. A new document class answers these
questions by naming its next reader rather than by negotiating each
branch separately: the technical design is read next by the plan-writer
and the plan-adversary, so it takes the spec's side of every one of
them. What the class settles is what a document owes, never how many
dispatches discharge it. A technical design owes the integrity check
like any judged document; one audit reading it together with its design
spec discharges that debt for both, and the reader is why — the
plan-writer takes the two as one basis, so the question of whether that
basis suffices is one question about a pair. The two sides are named in
the glossary — a **judged document** against an **implementation plan**
— and the rule's branches say which class they mean rather than which
filename. The class is not called a design document, though three agent
cards and the plugin README use that phrase today: a design
spec and a technical design both carry "design" in their names, so the
phrase reads as one of them rather than as both.
Loading
Loading