diff --git wordpress.org/public_html/style/trac/wp-trac.js wordpress.org/public_html/style/trac/wp-trac.js
index 739b2fa18..20a420932 100644
--- wordpress.org/public_html/style/trac/wp-trac.js
+++ wordpress.org/public_html/style/trac/wp-trac.js
@@ -18,6 +18,7 @@ var wpTrac, coreKeywordList, gardenerKeywordList, reservedTerms, coreFocusesList
 		'has-unit-tests' : 'Proposed solution has unit test coverage.',
 		'needs-unit-tests' : 'Ticket has a particular need for unit tests.',
 		'needs-dev-note' : 'Ticket needs a post on the development blog.',
+		'has-dev-note' : 'Ticket with a published post on the development blog.',
 		'needs-docs' : 'Inline documentation is needed.',
 		'needs-codex' : 'The Codex needs to be updated or expanded.',
 		'has-screenshots' : 'Visual changes are documented with screenshots.',
@@ -1071,6 +1072,12 @@ var wpTrac, coreKeywordList, gardenerKeywordList, reservedTerms, coreFocusesList
 						wpTrac.workflow.removeKeyword( 'has-screenshots' );
 					}
 
+					if ( 'has-dev-note' === keyword ) {
+						wpTrac.workflow.removeKeyword( 'needs-dev-note' );
+					} else if ( 'needs-dev-note' === keyword ) {
+						wpTrac.workflow.removeKeyword( 'has-dev-note' );
+					}
+
 					// Add it to the bin, and refresh the hidden input.
 					html = $('<span />').text(keyword).attr('data-keyword', keyword).prepend('<a class="dashicons dashicons-dismiss" href="#" />');
 					if ( title ) {
