Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
299 commits
Select commit Hold shift + click to select a range
a4732a8
fix(progress): bind each crew lane to its own launch by tool_use_id
ancongui Nov 6, 2026
a47f93e
feat(hooks): run the crew gates when a member stops
ancongui Nov 6, 2026
fe14248
fix(status): show Crew and You on their own rows, wrap long values
ancongui Nov 6, 2026
321b656
docs(tutorials): add a first-task tutorial for every surface
ancongui Nov 6, 2026
adc03a0
docs(dashboard): describe the live server, Background work and drawers
ancongui Nov 6, 2026
0c1fb1a
docs(getting-started): explain the pinned install and first-run stacks
ancongui Nov 6, 2026
f54206a
feat(guard): refuse a forged HOME, config or dev link for devkit
ancongui Nov 6, 2026
9c4d697
fix(hooks): refuse DEVKIT_* variables in the user settings' env block
ancongui Nov 6, 2026
5edef57
docs(install): cover pin refusals, rollback and trying a change
ancongui Nov 6, 2026
a055b6e
feat(shell): complete the crew, progress, task and install options
ancongui Nov 6, 2026
a057004
docs(guard): document protected state and forged environment rules
ancongui Nov 6, 2026
733b38f
docs: link the tutorials and the surfaces page from the indexes
ancongui Nov 6, 2026
9d55aec
docs(commands): document new install, dashboard, crew and task options
ancongui Nov 6, 2026
a83ff47
feat(crew): route the RACI by declared kinds of work, not words
ancongui Nov 6, 2026
e9e2963
chore(crew): regenerate the agent files from the roster
ancongui Nov 6, 2026
3cb4150
fix(guard): refuse relative-path writes from inside devkit state
ancongui Nov 6, 2026
26e257d
feat(progress): hold nested agents to their parent's limits
ancongui Nov 6, 2026
f83a3d1
feat(lessons): anchor lessons and skill rules on behavior, not words
ancongui Nov 6, 2026
53ca063
feat(progress): anchor a step's kind of work in its declared activity
ancongui Nov 6, 2026
081e4c4
fix(gates): count python3 proofs, blame a member only for its own lines
ancongui Nov 6, 2026
eaafde3
fix(crew): let members launch narrow helpers, show the real slot limit
ancongui Nov 6, 2026
c3c6afb
chore(crew): regenerate the agent files after the helper rule
ancongui Nov 6, 2026
fddba0b
test(hooks): pin compaction, resume and clear payloads (F10 spike)
ancongui Nov 6, 2026
487b929
fix(guard): judge crew commands by what the shell runs
ancongui Nov 6, 2026
479970c
fix(guard): keep each crew member to its own scratch folder
ancongui Nov 6, 2026
4e9035a
fix(progress): restrict a lane whose launch record was lost
ancongui Nov 6, 2026
fca9668
fix(hooks): judge a subagent's shell calls with the guard's crew rules
ancongui Nov 6, 2026
f270379
fix(guard): refuse relative writes from a folder holding devkit state
ancongui Nov 6, 2026
46b8746
fix(guard): count scratchpad/<member>-<task>/ as the member's folder
ancongui Nov 6, 2026
90a8bb1
test(hooks): redact the temp path in the background Agent fixture
ancongui Nov 6, 2026
7d23251
test(selfcheck): add drift checks D1-D11 with a known-drift allowlist
ancongui Nov 6, 2026
e6de8a9
test(progress): pin devkit's default config in the shared fixtures
ancongui Nov 6, 2026
a0f3f1d
fix(hooks): drop the prompt hook's calls to removed functions
ancongui Nov 6, 2026
5c52a99
fix(guard): see through wrapper flags and arithmetic shifts
ancongui Nov 6, 2026
29b344a
feat(progress): decide who runs a dev command from a call ledger
ancongui Nov 6, 2026
dae3e27
feat(audit): schema v2, hash chain, retention, exports and queries
ancongui Nov 6, 2026
ca3bdad
feat(guard): run review and read-only lanes on a read-only allowlist
ancongui Nov 6, 2026
c617a53
feat(audit): wire the new dev audit commands and config checks
ancongui Nov 6, 2026
27171e4
docs(agents): correct the rules on skills, slots and member checks
ancongui Nov 6, 2026
6b5f301
docs(skills): teach kinds of work, crew gates and status block lines
ancongui Nov 6, 2026
0183311
docs(diagrams): show the slot limit and every crew check
ancongui Nov 6, 2026
f02b8d7
docs: describe skill rules and development turns by behavior
ancongui Nov 6, 2026
e9082ee
fix(mcp): read who acted from the audit record's actor
ancongui Nov 6, 2026
165a8b4
feat(guard): refuse escape hatches to members, collect main uses
ancongui Nov 6, 2026
f3f276f
fix(crew): close review 2's roster gaps and their drift checks
ancongui Nov 6, 2026
b1993f1
feat(skills): offer the iac skill group for Terraform, off by default
ancongui Nov 6, 2026
7ea15e3
test(selfcheck): list the guard helpers awaiting their hooks wiring
ancongui Nov 6, 2026
5e351c2
docs(crew): document kinds of work, callers, helpers and crew gates
ancongui Nov 6, 2026
d377590
docs(configuration): document every key the code reads
ancongui Nov 6, 2026
37be590
docs(lessons): anchor lessons and recall them by behavior
ancongui Nov 6, 2026
c7821b6
docs(commands): document kinds of work, lesson anchors and dev audit
ancongui Nov 6, 2026
3d408eb
docs(hooks): list the 11 hook events and what SubagentStop checks
ancongui Nov 6, 2026
2635fd2
docs(skills): put every dev command in the using-devkit table
ancongui Nov 6, 2026
2e08d5b
fix(dashboard): count crew reports, plan totals and plain step titles
ancongui Nov 6, 2026
1893b50
fix(mcp): mark task updates destructive and say the guard skips them
ancongui Nov 6, 2026
80e4aff
feat(audit): register dev session as an audited lifecycle command
ancongui Nov 6, 2026
270ede5
feat(crew): approve each step explicitly and reconcile ended lanes
ancongui Nov 6, 2026
fbc3ab7
fix(gates): see shell writes, owe only the proofs of phases that applied
ancongui Nov 6, 2026
5b15c0b
fix(scope): count a reply with no tools as the previous turn's kind
ancongui Nov 6, 2026
acc0aea
feat(doctor): check that the crew's skills are installed for each agent
ancongui Nov 6, 2026
f296c56
feat(selfcheck): apply the RACI rules to the team's crew changes
ancongui Nov 6, 2026
69534f3
test(crew): cover the five enforced rows no test named
ancongui Nov 6, 2026
1549a83
feat(progress): accept decisions and grants only from the developer
ancongui Nov 6, 2026
dd428df
fix(doctor): only inform about skills of an opt-in group that is off
ancongui Nov 6, 2026
95bab95
fix(progress): let a grant hold in its own repository only
ancongui Nov 6, 2026
866dee9
fix(progress): keep crew message and decision ids unique past 200
ancongui Nov 6, 2026
5157989
fix(guard): let read-only lanes read the audit trail
ancongui Nov 6, 2026
d9b2ef2
feat(guard): gate irreversible actions in two tiers
ancongui Nov 6, 2026
d60931e
feat(hooks): give sessions the catalog and recall lessons by behavior
ancongui Nov 6, 2026
058a458
fix(gitx): never read two escape hatches from dev's environment
ancongui Nov 6, 2026
6b3e7d6
feat(terminal): local projects, aliases, readable status and config
ancongui Nov 6, 2026
7ae8f4d
feat(progress): let dev progress assign pass --allow push,pr
ancongui Nov 6, 2026
d9c47bd
docs(crew): show pre-approvals with their targets in the mode help
ancongui Nov 6, 2026
a1446e6
fix(audit): keep team records 13 months and refuse a floor under 3
ancongui Nov 6, 2026
c707400
fix(audit): close the redactor's 14 gaps from the compliance probe
ancongui Nov 6, 2026
f5c49a6
fix(audit): keep message text and home folders out of every record
ancongui Nov 6, 2026
a47a031
docs(audit): document retention, what git keeps, and personal data
ancongui Nov 6, 2026
5d9bd06
fix(guard): see git and gh aliases and shell scripts run by path
ancongui Nov 6, 2026
0c33ffc
test(consistency): list the F5 gate's calls that await the hooks wiring
ancongui Nov 6, 2026
8c533e4
fix(progress): audit crew messages by kind and length, not text
ancongui Nov 6, 2026
18fae98
test(consistency): drop three known drifts that d60931e wired
ancongui Nov 6, 2026
a3e8e82
test(guard): pin the headless marker as a hatch no agent hands on
ancongui Nov 6, 2026
85e37de
feat(continuity): carry a session's state through compaction and resume
ancongui Nov 6, 2026
8d0b9df
docs(audit): document the record, levels, the chain and exports (R9)
ancongui Nov 6, 2026
375a819
docs(configuration): add the audit and safeguards keys, fix two hatches
ancongui Nov 6, 2026
f893440
docs(agents): add the catalog, lesson recall and evidence to the hooks
ancongui Nov 6, 2026
f7e079b
docs(changelog): write the 26.11.3 entry, unreleased
ancongui Nov 6, 2026
cb664b8
fix(audit): leave dev alias and the dev free plan out of the trail
ancongui Nov 6, 2026
f6c115c
fix(dashboard): open data URLs only through safeUrl
ancongui Nov 6, 2026
9c6ad6b
test(multilingual): declare the kind of work an override names
ancongui Nov 6, 2026
d5c730b
docs(dashboard): regenerate the run, Background and team screenshots
ancongui Nov 6, 2026
6c45efc
fix(dashboard): round estimates and times left to 5 minutes
ancongui Nov 6, 2026
c8193c2
fix(guard): record the gate's action class as irreversible=
ancongui Nov 6, 2026
8ca5add
fix(progress): read developer evidence from the session's own transcript
ancongui Nov 6, 2026
a5b06fe
docs(dashboard): show the rounded estimate in the run screenshots
ancongui Nov 6, 2026
267b469
fix(continuity): keep request text only in the checkpoint's prompts
ancongui Nov 6, 2026
1d6dda7
test(raci): stop the members with a report whose Check is evidence
ancongui Nov 6, 2026
e10aabb
fix(raci): let only the Responsible member take a declared kind of work
ancongui Nov 6, 2026
cb932f2
feat(disk): explain disk use on this Mac and free it by plan item
ancongui Nov 6, 2026
160e179
feat(cli): wire Kid's dev session commands
ancongui Nov 6, 2026
38a7c16
fix(progress): round estimates in dev progress like the dashboard
ancongui Nov 6, 2026
9f3c9f5
feat(setup): offer the iac skill group when Terraform is picked
ancongui Nov 6, 2026
e304020
test(work): test the id guarantees instead of a birthday bound
ancongui Nov 6, 2026
3fb1dbb
feat(hooks): wire the guard's F7, F8 and F5 rules into the hooks
ancongui Nov 6, 2026
3e0817f
fix(guard): refuse transcript writes and evidence calls from agent code
ancongui Nov 6, 2026
2fb4fe6
fix(guard): see wrapped, appended and cross-repo irreversible actions
ancongui Nov 6, 2026
e11f943
fix(guard): let review lanes run dev test prove
ancongui Nov 6, 2026
d26c401
fix(gitx): read DEVKIT_FLAKY and DEVKIT_CROSS_PROJECT from no env
ancongui Nov 6, 2026
52cb8d4
test(guard): fold the allowed forms into the forgery refusals
ancongui Nov 6, 2026
5b7a6a3
feat(progress): wire F6 step endings, approvals and the reconciler
ancongui Nov 6, 2026
31d214d
fix(approvals): need a check mark and a finish time to approve
ancongui Nov 6, 2026
54411e6
test(red-team): seven live guard bypasses as expected failures
ancongui Nov 6, 2026
6677b15
fix(audit): close 8 redactor gaps and clean old records on read
ancongui Nov 6, 2026
2f61dc9
refactor(raci): remove approvals_missing now that approvals.owed decides
ancongui Nov 6, 2026
f764ed5
fix(guard): judge the agent's own modules a program loads
ancongui Nov 6, 2026
e5479c0
test(guard): check where a gate record keeps tier, setting and grant
ancongui Nov 6, 2026
76e2c8f
fix(audit): keep only the length of an approval line
ancongui Nov 6, 2026
1ba5efe
fix(guard): see writes made by the agent modules a program loads
ancongui Nov 6, 2026
fef6b2f
fix(approvals): refuse an approval of a step with no approver
ancongui Nov 6, 2026
fd29363
fix(evidence): count a prompt or an answer as evidence once
ancongui Nov 6, 2026
abb6f69
fix(progress): read lane meta files beside the session's own transcript
ancongui Nov 6, 2026
91a5f17
fix(audit): redact a value echoed into --password-stdin
ancongui Nov 6, 2026
05fcd1f
feat(prompt): show a devkit segment in the shell prompt
ancongui Nov 6, 2026
1cad86c
fix(audit): keep decision questions and free-text answers out
ancongui Nov 6, 2026
81c2be9
fix(disk): keep build output that holds files git tracks
ancongui Nov 6, 2026
cfc5f12
fix(guard): treat a program named at run time as unknown tier 2
ancongui Nov 6, 2026
d1811d5
feat(sync): expire old continuity records in the scheduled sync
ancongui Nov 6, 2026
eb9d20c
fix(guard): match dynamic-code markers per language, builtins only
ancongui Nov 6, 2026
bd55cb6
docs(changelog): add disk, the prompt and wired safeguards to 26.11.3
ancongui Nov 6, 2026
ce92a37
docs(dashboard): explain unverified steps, grants and screenshots
ancongui Nov 6, 2026
674a7c2
docs(agents): fix Oxford commas and first person in the global rules
ancongui Nov 6, 2026
920fe49
fix(guard): classify the command a git pager runs
ancongui Nov 6, 2026
929ae5f
fix(guard): read bash array elements as words, not a command
ancongui Nov 6, 2026
47ea30b
feat(crew): budget the crew's slots by quota, cost, reserve and order
ancongui Nov 6, 2026
809c168
fix(guard): count MCP merge, push and approve as external actions
ancongui Nov 6, 2026
4c0df86
fix(audit): pass a decision's options to its audit records
ancongui Nov 6, 2026
614600c
fix(progress): bind a step's push grant to its target and repository
ancongui Nov 7, 2026
c18b7b0
fix(guard): deny in enforce when the irreversible gate itself fails
ancongui Nov 7, 2026
7f2a47a
chore(security): mark owner-only chmods and a constant import
ancongui Nov 7, 2026
1b4694b
feat(crew): let a decision name the steps its answer approves
ancongui Nov 7, 2026
c9a23ed
test(progress): keep continuity and the prompt cache in the test folder
ancongui Nov 7, 2026
a98d7f5
fix(progress): give a file written during a review to the lane owning it
ancongui Nov 7, 2026
3090204
fix(evidence): let the developer grant one unknown command
ancongui Nov 7, 2026
1cc1ab8
fix(crew): mark the rules F5 to F8 wired as enforced in the matrix
ancongui Nov 7, 2026
80d3638
fix(ci): mark semgrep false positives in audit, setup, state, selfcheck
ancongui Nov 7, 2026
44b439f
fix(progress): round the status block's estimates like the dashboard
ancongui Nov 7, 2026
ee3fa1f
feat(cli): wire dev config set and dev progress step --approves
ancongui Nov 7, 2026
ad7cc45
docs(commands): document --approves, crew next --first and config set
ancongui Nov 7, 2026
fb60e4f
feat(shell): complete dev prompt, dev setup prompt and the new options
ancongui Nov 7, 2026
9fe0b15
fix(crew): offer the reserved slot to the developer's new step
ancongui Nov 7, 2026
7e767fb
refactor(progress): cost only the launches that hold a crew slot
ancongui Nov 7, 2026
98c5b2e
test(progress): keep the quota and the crew limit in the test folder
ancongui Nov 7, 2026
d58a72c
feat(continuity): wire the compaction hooks and devkit_resume
ancongui Nov 7, 2026
dfa84c5
fix(guard): run devkit isolated, refuse Python code-loading variables
ancongui Nov 7, 2026
67f7013
fix(guard): refuse dev config lock and unlock to agents
ancongui Nov 7, 2026
015d1b3
fix(guard): refuse nested agent sessions without hooks or sandbox
ancongui Nov 7, 2026
2c9f95e
fix(guard): refuse dev hook from every agent tool call
ancongui Nov 7, 2026
3c4987b
fix(guard): read a quoted heredoc message to a lane call as data
ancongui Nov 7, 2026
c43b30e
fix(guard): close the gh subcommand and pager variants of RT1 and RT3
ancongui Nov 7, 2026
32fe952
docs(guard): document the red team refusal rules and the unknown action
ancongui Nov 7, 2026
105630d
feat(branches): show where each branch lives in every view
ancongui Nov 7, 2026
af32065
feat(hooks): thread the end-of-turn checks before the Stop hook
ancongui Nov 7, 2026
78fb78e
feat(canary): send a crew name without its role back once
ancongui Nov 7, 2026
06c119a
fix(hooks): route quoted heredoc lane calls, run background dev isolated
ancongui Nov 7, 2026
547b115
docs(hooks): describe the crew slot budget in _crew_limits
ancongui Nov 7, 2026
20103b5
feat(hooks): name the branches only on this Mac at session start
ancongui Nov 7, 2026
95f7c44
fix(progress): offer a review step after unverified work
ancongui Nov 7, 2026
bfd921f
feat(crew): name crew members role first in devkit's output
ancongui Nov 7, 2026
5cc0760
feat(pipelines): gate draft PRs and tell when a push starts CI
ancongui Nov 7, 2026
f51fcd8
feat(pr): open drafts by policy and gate ready on local CI
ancongui Nov 7, 2026
a4ee3ac
fix(cli): run the bin/dev children isolated, as the shebang does
ancongui Nov 7, 2026
e0d6b4a
feat(canary): show the turns the Stop hook sent back
ancongui Nov 7, 2026
f93e31e
perf(branches): map every branch with a few git calls, not three each
ancongui Nov 7, 2026
a2997c5
feat(backup): back up branches when the push starts no CI run
ancongui Nov 7, 2026
8b6457f
fix(guard): refuse guardless sessions started by package runners
ancongui Nov 7, 2026
3c1471c
fix(guard): refuse codex profiles for agents
ancongui Nov 7, 2026
812a88b
fix(guard): classify a variable git subcommand as unknown
ancongui Nov 7, 2026
58f0088
fix(guard): judge sessions and dev hook named in interpreter code
ancongui Nov 7, 2026
1eaf153
fix(guard): refuse git config keys that run commands
ancongui Nov 7, 2026
dfb282c
fix(guard): treat git config from the environment as unknown
ancongui Nov 7, 2026
1fa348a
fix(guard): refuse writes to a repository's git folder
ancongui Nov 7, 2026
d1e357a
fix(guard): fail closed on a heredoc line bash 3.2 ends early
ancongui Nov 7, 2026
327859e
fix(guard): fail closed when the MCP gate raises
ancongui Nov 7, 2026
1f2687c
docs(guard): say what the guard is and is not, add the part-3 rules
ancongui Nov 7, 2026
c1fb111
fix(guard): stop reading text in interpreter code as program names
ancongui Nov 7, 2026
afc2eb3
feat(crew): name members role first in progress and dispatch output
ancongui Nov 7, 2026
c44dc63
fix(audit): register backup records, document backups and drafts
ancongui Nov 7, 2026
e7304f7
feat(dashboard): show where each branch lives on the project page
ancongui Nov 7, 2026
57635fc
fix(pr): open a draft without local CI evidence when drafts run no CI
ancongui Nov 7, 2026
0b09f8a
feat(commit): write messages in the commit template
ancongui Nov 7, 2026
f862a05
fix(setup): let dev install apply the commit template answer
ancongui Nov 7, 2026
66386e1
fix(testx): run a unittest start folder that is a package from the root
ancongui Nov 7, 2026
8987cf6
test: keep the suite away from the developer's real devkit state
ancongui Nov 7, 2026
77505de
fix(guard): name the tech lead by role in refusal texts
ancongui Nov 7, 2026
c9f2942
fix(security): start every devkit child process isolated
ancongui Nov 7, 2026
1251e1b
fix(guard): grant-gate branch backups, budget only pushes that start CI
ancongui Nov 7, 2026
324abd2
fix(progress): bind a step only to the launch that names it
ancongui Nov 7, 2026
69454e5
fix(progress): tell a review step by one rule everywhere
ancongui Nov 7, 2026
aaeb282
fix(progress): flag a review lane's write in a working scope as possible
ancongui Nov 7, 2026
1e60c49
fix(hooks): no handoff send-back per step or while the crew works
ancongui Nov 7, 2026
2430ebf
fix(hooks): count a milestone only for the commits made before it
ancongui Nov 7, 2026
2b0d633
fix(stubs): need the stub word and its time word in one clause
ancongui Nov 7, 2026
92ce441
fix(pr): read checks that were all skipped as no run yet
ancongui Nov 7, 2026
a20d04d
fix(dashboard): limit branch map reads on the server
ancongui Nov 7, 2026
1961375
fix(guard): read dev flags the way the parser reads them
ancongui Nov 7, 2026
d80638f
fix(prompt): take consent only from the developer, read a safe cache
ancongui Nov 7, 2026
fb7fa26
fix(guard): close the other dev flag and word dodges
ancongui Nov 7, 2026
9f53f78
feat(backup): choose each project's backup policy, ask for public repos
ancongui Nov 7, 2026
772057c
fix(guard): make embargo lifts and public backups developer-only
ancongui Nov 7, 2026
57341e7
fix(backup): hold embargoed commits, fail closed on an unreadable note
ancongui Nov 7, 2026
8863ecb
feat(backup): parse dev backup policy and show it on the dashboard
ancongui Nov 7, 2026
24699fa
fix(guard): grant developer-only actions with grant embargo and backup
ancongui Nov 7, 2026
5c9d40a
fix(backup): check exactly what the push target lacks, never deploy
ancongui Nov 7, 2026
babf535
fix(hooks): close the hook's copy of the background log
ancongui Nov 7, 2026
1251c08
docs(changelog): finish the 26.11.3 entry
ancongui Nov 7, 2026
76cce59
docs(agents): name the crew by role, add backups and continuity
ancongui Nov 7, 2026
f04d0e7
docs: add the continuity page and match the pages to 26.11.3
ancongui Nov 7, 2026
634c167
docs: name the tech lead by role and list what fails closed
ancongui Nov 7, 2026
7eaff26
docs(diagrams): say the tech lead routes a CI failure
ancongui Nov 7, 2026
1c5d3bb
chore(release): 26.11.3
ancongui Nov 7, 2026
44ec13d
fix(guard): keep agents off a note's embargo list and backup policy
ancongui Nov 7, 2026
202e88d
fix(guard): make an agent's push of an embargoed branch the developer's
ancongui Nov 7, 2026
ca3d600
fix(branches): read a note with a BOM or CRLF as the note it is
ancongui Nov 7, 2026
eda4afb
fix(backup): count an unfiltered push trigger as deploying from it
ancongui Nov 7, 2026
3cb9e26
docs: say how the guard keeps embargoed branches off the remote
ancongui Nov 7, 2026
575e415
fix(setup): take the commit template's consent only from the developer
ancongui Nov 7, 2026
4794274
fix(guard): count a state path built by nested calls as a write
ancongui Nov 7, 2026
71dc01b
fix(guard): make a crew lane read-only when the roster cannot be read
ancongui Nov 7, 2026
605626d
fix(guard): refuse a push from a run-time folder under an embargo
ancongui Nov 7, 2026
cc259b7
fix(guard): hold unknown-folder pushes on any project's embargo
ancongui Nov 7, 2026
b3f45a6
fix(codex): trust only devkit's own Codex hooks
ancongui Nov 7, 2026
628ae6c
docs(changelog): note the Codex hook trust and audit publish fixes
ancongui Nov 7, 2026
7a1c957
fix(audit): never publish a month file over 45 MB
ancongui Nov 7, 2026
0920a0e
perf(audit): measure a month file before reading it for publishing
ancongui Nov 7, 2026
ee90f8c
fix(guard): hold embargo pushes from git folders and non-project folders
ancongui Nov 7, 2026
bc90bb3
docs(guard): describe the embargo hold for non-project folders
ancongui Nov 7, 2026
7b71574
test(guard): give the gate tier tests an empty handoff of their own
ancongui Nov 7, 2026
3051fab
fix(guard): say how to repair a missing handoff in the embargo hold
ancongui Nov 7, 2026
ce910b9
test(hooks): give the wiring tests an empty handoff of their own
ancongui Nov 7, 2026
fd4ad3e
fix(setup): install skills when the agents/skills folder is missing
ancongui Nov 7, 2026
4a588f7
docs(release): date 26.11.3 and correct what later releases bring
ancongui Nov 7, 2026
8b4ec11
fix(consent): open irreversible actions only on an approving answer
ancongui Nov 7, 2026
dc8eec2
fix(consent): refuse a no as --performs and name it in the question
ancongui Nov 7, 2026
aabe913
docs(release): state the embargo's reach and move daily segments
ancongui Nov 7, 2026
77e0e00
docs(embargo): say what an embargo holds until 26.11.4
ancongui Nov 7, 2026
00918d0
fix(consent): read a refusing option whatever punctuation follows it
ancongui Nov 7, 2026
775bd98
fix(consent): read a quoted refusing option and more refusing words
ancongui Nov 7, 2026
af0bee0
fix(work): close the sync log handle after starting the sync
ancongui Nov 7, 2026
8023cf6
test(hermetic): leave out the run's own output; place-free scope tests
ancongui Nov 7, 2026
263fe86
test(dashboard): run headless Chrome without the login keychain
ancongui Nov 7, 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
10 changes: 8 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
# devkit CI: the confirmation of a local run, not the test runner (AGENTS.md §7).
# Run the same thing locally first: python3 -m unittest discover -s tests && /usr/bin/python3 -m unittest discover -s tests
# Run the same thing locally first: python3 -m unittest discover -s tests -t . && /usr/bin/python3 -m unittest discover -s tests -t .
# (-t . runs tests/ as a package, so tests/__init__.py gives the run a temporary home: tests/_hermetic.py)
# A draft pull request runs no job: the one run starts when it is marked ready for review (ready_for_review), and
# every push after that runs again. On a push to main, github.event.pull_request is null, which equals false.
name: ci

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
push:
branches: [main]

Expand All @@ -17,6 +21,7 @@ concurrency:
jobs:
test:
name: tests (Python ${{ matrix.python }})
if: github.event.pull_request.draft == false # drafts wait for ready_for_review
runs-on: macos-latest
timeout-minutes: 15
strategy:
Expand All @@ -33,12 +38,13 @@ jobs:
- name: Compile
run: python -m compileall -q lib bin
- name: Unit tests
run: python -m unittest discover -s tests
run: python -m unittest discover -s tests -t .
env:
DEVKIT_NO_NOTIFY: "1"

security:
name: Security scans
if: github.event.pull_request.draft == false # drafts wait for ready_for_review
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
Expand Down
514 changes: 514 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@ installing it:
```bash
git clone https://github.com/fireflysoftwaresolutions/devkit.git
cd devkit
python3 -m unittest discover -s tests
/usr/bin/python3 -m unittest discover -s tests # Python 3.9, the macOS system Python
python3 -m unittest discover -s tests -t .
/usr/bin/python3 -m unittest discover -s tests -t . # Python 3.9, the macOS system Python
bin/dev --help
```

The `-t .` runs `tests/` as a package, so `tests/__init__.py` gives the whole run a temporary home and your own
devkit state, configuration and handoff repository stay out of reach (`tests/_hermetic.py`). Without it, unittest
skips `tests/__init__.py`, and `tests/test_hermetic.py` fails to say so.

Installing devkit (`./install.sh`) changes your agents' global settings, hooks, and instructions under `~/.claude`
and `~/.codex`. Do it only when you want devkit to manage your machine; see [Getting started](docs/getting-started.md).

Expand All @@ -49,7 +53,7 @@ Every check must pass before you open the pull request. CI runs the tests on Pyt

| Check | Command |
| --- | --- |
| The tests, on both Pythons | `python3 -m unittest discover -s tests` and `/usr/bin/python3 -m unittest discover -s tests` |
| The tests, on both Pythons | `python3 -m unittest discover -s tests -t .` and `/usr/bin/python3 -m unittest discover -s tests -t .` |
| The code compiles | `python3 -m compileall -q lib bin` |
| No test that cannot fail | `bin/dev test audit tests/` |
| No unfinished work (stubs, placeholders, TODOs without a task) | `bin/dev stubs` |
Expand Down
87 changes: 62 additions & 25 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
26.11.2
26.11.3
140 changes: 103 additions & 37 deletions agents/AGENTS.md

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion bin/dev
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#!/usr/bin/env python3
#!/usr/bin/env -S python3 -I -S
# Copyright (c) 2026 Firefly Software Solutions Inc.
# SPDX-License-Identifier: Apache-2.0
"""devkit command-line entry point. See `dev help` and docs/."""
# -I -S: devkit's own process (the guard included) loads only the standard library and lib/ below: no PYTHON*
# variable, current folder, user or site-packages folder or .pth file can put code into it (RT4).
import os
import sys

Expand Down
47 changes: 43 additions & 4 deletions config/claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
"skipDangerousModePermissionPrompt": true,
"attribution": {
"commit": "",
"pr": ""
"pr": "",
"sessionUrl": false
},
"cleanupPeriodDays": 14,
"env": {
"BASH_DEFAULT_TIMEOUT_MS": "300000",
"DOCKER_HOST": "unix://{{HOME}}/.colima/default/docker.sock",
"TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE": "/var/run/docker.sock",
"NG_CLI_ANALYTICS": "false",
Expand All @@ -26,6 +28,7 @@
"hooks": {
"SessionStart": [
{
"matcher": "startup|resume|clear|compact",
"hooks": [
{
"type": "command",
Expand All @@ -37,7 +40,7 @@
],
"PreToolUse": [
{
"matcher": "Bash|Write|Edit|MultiEdit|NotebookEdit|Agent|Task",
"matcher": "Bash|Write|Edit|MultiEdit|NotebookEdit|Agent|Task|WebFetch|mcp__.*",
"hooks": [
{
"type": "command",
Expand Down Expand Up @@ -71,7 +74,7 @@
],
"ConfigChange": [
{
"matcher": "user_settings",
"matcher": "user_settings|project_settings|local_settings",
"hooks": [
{
"type": "command",
Expand Down Expand Up @@ -105,7 +108,7 @@
],
"PostToolUse": [
{
"matcher": "Bash|Agent|Task|Write|Edit|MultiEdit|WebFetch|WebSearch",
"matcher": "Bash|Agent|Task|Monitor|Write|Edit|MultiEdit|WebFetch|WebSearch|AskUserQuestion",
"hooks": [
{
"type": "command",
Expand All @@ -115,6 +118,18 @@
]
}
],
"PostToolUseFailure": [
{
"matcher": "Agent|Task|Bash",
"hooks": [
{
"type": "command",
"command": "'{{DEVKIT}}/bin/dev' hook post-tool-failure --agent claude",
"timeout": 10
}
]
}
],
"SubagentStart": [
{
"hooks": [
Expand All @@ -136,6 +151,30 @@
}
]
}
],
"PreCompact": [
{
"matcher": "manual|auto",
"hooks": [
{
"type": "command",
"command": "'{{DEVKIT}}/bin/dev' hook pre-compact --agent claude",
"timeout": 15
}
]
}
],
"PostCompact": [
{
"matcher": "manual|auto",
"hooks": [
{
"type": "command",
"command": "'{{DEVKIT}}/bin/dev' hook post-compact --agent claude",
"timeout": 10
}
]
}
]
},
"fastModePerSessionOptIn": true
Expand Down
5 changes: 4 additions & 1 deletion config/codex/config.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_comment": "Written into ~/.codex/config.toml through Codex's own config API (codex app-server config/batchWrite). Projects under dev_root are marked trusted by `dev install`. `profiles` become ~/.codex/<name>.config.toml (`codex --profile deep`); Agent roles come from config/crew.json (dev crew). The main model and effort stay the user's choice (/model): devkit never sets them. review_model makes /review use the strongest model, and project_doc_max_bytes reads a project's AGENTS.md whole (Codex's default stops at 32 KiB; Claude Code reads CLAUDE.md whole).",
"_comment": "Written into ~/.codex/config.toml through Codex's own config API (codex app-server config/batchWrite). Projects under dev_root are marked trusted by `dev install`. `profiles` become ~/.codex/<name>.config.toml (`codex --profile deep`); Agent roles come from config/crew.json (dev crew). The main model and effort stay the user's choice (/model): devkit never sets them. review_model makes /review use the strongest model, and project_doc_max_bytes reads a project's AGENTS.md whole (Codex's default stops at 32 KiB; Claude Code reads CLAUDE.md whole). analytics.enabled=false stops OpenAI's usage analytics, like the other telemetry opt-outs. Commit and PR attribution is an account setting on OpenAI's side, not a config.toml key: `dev doctor` reads it from the sessions.",
"settings": {
"approval_policy": "never",
"sandbox_mode": "danger-full-access",
Expand All @@ -18,6 +18,9 @@
},
"agents": {
"max_concurrent_threads_per_session": 4
},
"analytics": {
"enabled": false
}
},
"profiles": {
Expand Down
22 changes: 22 additions & 0 deletions config/codex/hooks.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,28 @@
}
]
}
],
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "'{{DEVKIT}}/bin/dev' hook pre-compact --agent codex",
"timeout": 15
}
]
}
],
"PostCompact": [
{
"hooks": [
{
"type": "command",
"command": "'{{DEVKIT}}/bin/dev' hook post-compact --agent codex",
"timeout": 10
}
]
}
]
}
}
Loading
Loading